Quelle est la différence entre INNER JOIN
, LEFT JOIN
, RIGHT JOIN
et FULL JOIN
dans MySQL ?
La lecture de cet article original sur Le projet de code vous aidera beaucoup: Représentation visuelle des jointures SQL .
Vérifiez également cet article: SQL SERVER - Meilleures performances - LEFT JOIN ou NOT IN? .
Trouvez l’original à: Différence entre JOIN et OUTER JOIN dans MySQL .
INNER JOIN récupère tous les enregistrements communs aux deux tables en fonction de la clé étrangère.
LEFT JOIN récupère tous les enregistrements de la table liée LEFT, mais si vous avez sélectionné certaines colonnes de la table RIGHT, s'il n'y a pas d'enregistrements associés, ces colonnes contiendront NULL.
RIGHT JOIN est comme ci-dessus mais obtient tous les enregistrements de la table RIGHT.
FULL JOIN récupère tous les enregistrements des deux tables et place NULL dans les colonnes où les enregistrements liés n'existent pas dans la table opposée.
Une clause SQL JOIN est utilisée pour combiner des lignes de deux ou plusieurs tables, en fonction d'un champ commun entre elles.
Il existe différents types de jointures disponibles dans SQL:
INNER JOIN : renvoie les lignes lorsqu'il y a une correspondance dans les deux tables.
LEFT JOIN : renvoie toutes les lignes de la table de gauche, même s'il n'y a pas de correspondance dans la table de droite.
RIGHT JOIN : renvoie toutes les lignes de la table de droite, même s'il n'y a pas de correspondance dans la table de gauche.
FULL JOIN : Il combine les résultats des jointures externes gauche et droite.
La table jointe contiendra tous les enregistrements des deux tables et remplira des valeurs NULL pour les correspondances manquantes de chaque côté.
SELF JOIN : est utilisé pour joindre une table à elle-même, comme si la table était composée de deux tables, en renommant temporairement au moins une table dans l'instruction SQL.
CARTESIAN JOIN : renvoie le produit cartésien des ensembles d'enregistrements de deux ou plusieurs tables jointes.
Nous pouvons prendre chacune des quatre premières jointures dans les détails:
Nous avons deux tables avec les valeurs suivantes.
TableA
id firstName lastName
.......................................
1 arun prasanth
2 ann antony
3 sruthy abc
6 new abc
TableB
id2 age Place
................
1 24 kerala
2 24 usa
3 25 ekm
5 24 chennai
.................................................. ..................
INNER JOIN
Note : indique l'intersection des deux tables, c'est-à-dire des lignes communes dans TableA et TableB.
Syntaxe
SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
Appliquez-le dans notre exemple de tableau:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.id2;
Le résultat sera
firstName lastName age Place
..............................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
LEFT JOIN
Note : donnera toutes les lignes sélectionnées dans TableA, plus toutes les lignes communes sélectionnées dans TableB.
Syntaxe
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
Appliquez-le dans notre exemple de tableau:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
LEFT JOIN TableB
ON TableA.id = TableB.id2;
Résultat
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
DROIT JOIN
Note : donnera toutes les lignes sélectionnées dans TableB, plus toutes les lignes communes sélectionnées dans TableA.
Syntaxe
SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
Appliquez-le dans notre exemple de tableau:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
RIGHT JOIN TableB
ON TableA.id = TableB.id2;
Résultat
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
NULL NULL 24 chennai
FULL JOIN
Remarque : Toutes les valeurs sélectionnées des deux tables seront renvoyées.
Syntaxe
SELECT table1.column1, table2.column2...
FROM table1
FULL JOIN table2
ON table1.common_field = table2.common_field;
Appliquez-le dans notre exemple de tableau:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
FULL JOIN TableB
ON TableA.id = TableB.id2;
Résultat
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
NULL NULL 24 chennai
Fait intéressant
Pour INNER rejoint l'ordre n'a pas d'importance
Pour les jointures (gauche, droite ou complète) OUTER, l’ordre importe
Mieux vaut aller vérifier ceci Lien il vous donnera des détails intéressants sur l'ordre de jointure