web-dev-qa-db-fra.com

Quelle est la différence entre INNER JOIN, LEFT JOIN, RIGHT JOIN et FULL JOIN?

Quelle est la différence entre INNER JOIN, LEFT JOIN, RIGHT JOIN et FULL JOIN dans MySQL ?

1533
Lion King

La lecture de cet article original sur Le projet de code vous aidera beaucoup: Représentation visuelle des jointures SQL .

alt text

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 .

3036
Pranay Rana

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.

653
Brian Leeming

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

623
Arunprasanth K V