Introduction aux jointures dans MySQL
MySQL Joins joue un rôle important lorsque nous devons joindre deux tables ensemble sur la base d'une ou plusieurs valeurs communes partagées par deux tables.
Exemple : considérons que nous avons deux tables, l'une est la table des employés composée de employee_id, phn_no, salaire et département. Une autre table est la table d'adresses qui se compose de employee_id et address. Si nous devons trouver l'employé_id, le service et l'adresse, nous devons alors joindre les deux tables partageant le champ commun en tant qu'employé_id.
Requête :
SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;
6 principaux types de jointures dans MySQL
Il existe différents types de jointures dans MySQL. Les jointures mentionnées ci-dessous se rencontrent dans l'utilisation quotidienne et sont les plus utiles lors de l'exécution de nombreuses requêtes dans des scénarios de cas réels.
- Jointure interne
- Joint gauche
- Jointure droite
- Jointure externe complète
- Auto-adhésion
- Jointure croisée
1. Jointure intérieure
La jointure interne renvoie la valeur qui correspond dans les deux tables.
Cette partie vient dans la sortie comme indiqué dans l'image ci-dessus.
Exemple 1:
Emp_id | département | Un salaire |
1001 | IL | 1000 |
1002 | CSR | 800 |
1003 | IL | 2000 |
Ceci est la table des employés.
Emp_id | Adresse |
1002 | Delhi |
1003 | Bangalore |
1005 | Bbsr |
Voici le tableau d'adresses de ces employés. La clé primaire de l'employé de la table parent emp_id est utilisée comme clé étrangère dans la table d'adresses qui est la table enfant. Nous trouverons l'emp_id, le département et l'adresse d'un employé à l'aide de la jointure interne. Parce que les états de jointure interne Il récupère les enregistrements qui sont présents / communs dans les deux tables.
Requete:
SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;
Nous donnons un alias au nom de la table juste pour éviter de prendre plus de temps. Dans la requête ci-dessus, nous utilisons l'alias «emp» pour la table des employés et «ads» pour la table des adresses.
Production:
Emp_id | département | Adresse |
1002 | CSR | Delhi |
1003 | IL | Bangalore |
Comme dans l'exemple ci-dessus, emp_id 1002 et 1003 étaient communs aux deux tables, la commande de jointure interne récupère la sortie pour ces employés uniquement.
Exemple # 2:
Ici, nous avons 2 tables, table1 & table2. Les deux tableaux sont constitués d'un attribut chacun en tant que colonne A et colonne B respectivement.
Tableau 1
Colonne A |
1 |
1 |
2 |
3 |
4 |
Tableau 2
Colonne B |
1 |
2 |
2 |
3 |
3 |
5 |
Requete:
If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;
Production:
Colonne A | Colonne B |
1 | 1 |
1 | Nul |
2 | 2 |
Nul | 2 |
3 | 3 |
Nul | 3 |
2. Joint gauche
Cette jointure renvoie tous les enregistrements de la table de gauche et les enregistrements correspondants de la table de droite.
Comme le montre le diagramme ci-dessus, il comprend tous les enregistrements du tableau A et les enregistrements courants de A et B.
Exemple 1:
N ° de client | Nom | Ville |
1 | Harish | Cuttack |
2 | David | Bangalore |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
Tableau des clients:
Numéro de commande | Montant | N ° de client |
19868 | 7575, 00 | 4 |
19976 | 434654, 00 | 2 |
99680 | 7457, 00 | 3 |
Tableau de commande:
Nous découvrirons customer_id, name et order_id associés en utilisant la jointure gauche.
Requete:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;
Production:
N ° de client | Nom | Numéro de commande |
1 | Harish | nul |
2 | David | 19976 |
3 | Mahesh | 99680 |
4 | Sam | 19868 |
Comme nous en avons discuté, cette jointure gauche a récupéré tous les identifiants client de la table client et les communs entre les deux tables. Pour le customer_id '1', il apparaîtra comme 'null' car le '1' customer_id n'est pas présent dans la table de commande.
Exemple # 2:
Ici, nous avons 2 tables, table1 & table2. Les deux tableaux sont constitués d'un attribut chacun en tant que colonne A et colonne B respectivement.
Tableau 1
Colonne A |
1 |
1 |
2 |
2 |
3 |
Tableau 2
Colonne B |
1 |
2 |
2 |
4 |
4 |
5 |
5 |
Requete:
If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;
Colonne A | Colonne B |
1 | 1 |
1 | Nul |
2 | 2 |
2 | 2 |
3 | Nul |
3. Jointure droite
Cette jointure renvoie tous les enregistrements de la table de droite et ceux correspondants de la table de gauche.
Le diagramme ci-dessus montre qu'il récupère tous les enregistrements de la table B et celui commun qui est présent dans les deux tables.
Exemple:
N ° de client | Nom | Ville |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
5 | RAM | Mumbai |
Tableau des clients:
Numéro de commande | Montant | N ° de client |
19868 | 7575, 00 | 4 |
19976 | 434654, 00 | 2 |
99680 | 7457, 00 | 3 |
Tableau de commande:
Nous découvrirons customer_id, name et order_id qui lui sont associés en utilisant la bonne jointure.
Requete:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;
Production:
N ° de client | Nom | Numéro de commande |
2 | nul | 19976 |
3 | Mahesh | 99680 |
4 | Sam | 19868 |
Comme nous avons effectué la jointure ici, la requête a récupéré tous les identifiants client de la table de commande et les enregistrements communs qui se trouvent dans les deux tables.
4. Jointure externe complète
La jointure externe complète renvoie tous les enregistrements des deux tables s'il y a un champ commun partagé.
Exemple:
N ° de client | Nom | Ville |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
5 | RAM | Mumbai |
Tableau des clients:
Numéro de commande | Montant | N ° de client |
19868 | 7575, 00 | 4 |
19976 | 434654, 00 | 2 |
99680 | 7457, 00 | 3 |
Tableau de commande:
Nous découvrirons customer_id, name et order_id qui lui sont associés à l'aide d'une jointure externe complète.
Requete:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;
Production:
N ° de client | Nom | Numéro de commande |
2 | nul | 19976 |
3 | Mahesh | 99680 |
4 | Sam | 19868 |
5 | RAM | nul |
Cette jointure externe complète a récupéré tous les identifiants client de la table client ainsi que de la table de commande.
5. Auto-adhésion
L'auto-jointure est une jointure régulière et ici la table se joint à elle-même uniquement.
Emp_id | Nom | Pas de téléphone | Ville | Pays |
1001 | R. Madhvan | 9687687698 | Bangalore | Inde |
1002 | Gobu Sharma | 9856453423 | Pune | Inde |
1003 | Debasish Das | 8765456787 | Mumbai | Inde |
1004 | Amit Rout | 4567788635 | Pune | Inde |
1005 | Sambit Kar | 8789887873 | Hyderabad | Inde |
Voici la table des employés composée de plusieurs champs. Nous découvrirons les employés vivant dans la même ville.
Requête :
SELECT e1.name AS Employee_name1, e2.name AS employee_name2, e1.City
FROM employee e1, employee e2
WHERE e1.name e2.name
AND e1.city = e2.city;
Sortie :
Employee_name1 | Employee_name2 | e1.city |
Gobu Sharma | Amit Rout | Pune |
Amit Rout | Gobu Sharma | Pune |
6. Jointure croisée
Cette jointure produit un résultat où le nombre de lignes de la première table est multiplié par les lignes de la seconde table. Ce type de résultat est appelé le produit cartésien. Si nous utilisons la clause WHERE avec cette jointure, cela fonctionnera comme une jointure interne.
Exemple:
Prod_id | Nom_produit | Prod_unit | Company_id |
1 | Mélange Chex | Pcs | 12 |
2 | Cheez-it | Pcs | 15 |
3 | Biscuit | pièces | 16 |
Tableau des produits :
Company_id | Nom de la compagnie | Company_city |
15 | Gourmets | Delhi |
16 | Jack n Jill | Cuttack |
17 | Naturel | Bangalore |
Tableau d' entreprise :
Nous appliquerons une jointure croisée à ces tables.
Requête :
SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;
Sortie :
p.product_name | p.prod_unit | c.company_name |
Mélange Chex | Pcs | Gourmets |
Cheez-it | Pcs | Gourmets |
Biscuit | Pcs | Gourmets |
Mélange Chex | Pcs | Jack n Jill |
Cheez-it | Pcs | Jack n Jill |
Biscuit | Pcs | Jack n Jill |
Mélange Chex | Pcs | Naturel |
Cheez-it | Pcs | Naturel |
Biscuit | Pcs | Naturel |
Conclusion
L'importance de ces jointures est très importante tout en travaillant dans des scénarios en temps réel ainsi que dans certaines autres technologies. Dans les visualisations comme Tableau et Power BI, les jointures jouent un rôle essentiel. La pratique structurée de ceci est essentielle pour intégrer ces nouvelles techniques et compétences.
Article recommandé
Ceci est un guide des jointures dans MySQL. Nous discutons ici des 6 principaux types de jointures dans MySQL comme Inner, Left, Right, Full, Self, Cross et ses exemples ainsi que Query et Output. vous pouvez également consulter nos articles suggérés pour en savoir plus -
- Top 10 des commandes MySQL
- Introduction aux opérateurs MySQL
- MySQL vs SQLite | Comparaison des 14 meilleurs
- Top 23 des fonctions MySQL String
- Expliquer la commande d'insertion dans MySQL avec des exemples
- 6 principales différences entre la clé primaire et la clé étrangère