Quelle est la différence entre la jointure intérieure, la jointure de gauche, la jointure de droite et la jointure complète? [dupliquer]

cette question a déjà une réponse ici:

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

1275
demandé sur DineshDB 2011-04-18 21:15:24
la source

3 ответов

la lecture de cet article original sur le projet de Code vous aidera beaucoup: représentation visuelle de SQL joint .

alt text

aussi vérifier ce post: SQL SERVER-meilleure Performance-gauche rejoindre ou non? .

"151900920 Trouver l'original de l'un à l': la Différence entre les REJOINDRE et JOINTURE EXTERNE dans MySQL .

2605
répondu Pranay Rana 2017-05-23 14:55:01
la source

INNER JOIN récupère tous les enregistrements qui sont communes entre les deux tables en fonction de la clé étrangère

LEFT JOIN obtient tous les enregistrements de la table liée de gauche, mais si vous avez sélectionné certaines colonnes de la table de droite, s'il n'y a pas d'enregistrements liés, ces colonnes contiennent NULL

RIGHT JOIN est comme ci-dessus, mais il obtient tous les enregistrements dans la table de DROITE

full JOIN obtient tous les enregistrements des deux tables et met NULL dans les colonnes où les enregistrements connexes n'existent pas dans la table opposée

548
répondu Brian Leeming 2017-11-09 08:14:29
la source

une clause de jonction SQL est utilisée pour combiner des lignes à partir de deux tables ou plus, basé sur un champ commun entre eux.

il existe différents types de jointures disponibles en 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 d'allumettes dans le table de droite.

RIGHT JOIN : renvoie toutes les lignes de la table de droite, même s'il n'y a aucune 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 NULLs pour les matches manquants de chaque côté.

SELF JOIN" : est utilisé pour joindre une table à elle-même comme si la table était deux tables, renommant temporairement au moins une table dans la déclaration SQL.

CARTESIAN JOIN : renvoie le produit cartésien des séries d'enregistrements des deux tables ou plus jointes.

nous pouvons prendre chaque quatre premiers jointures dans les détails:

nous avons deux tableaux 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 :elle donne l'intersection des deux tableaux, c'est-à-dire les lignes qu'ils ont en commun dans les tableaux A et B

Syntaxe

SELECT table1.column1, table2.column2...
  FROM table1
 INNER JOIN table2
    ON table1.common_field = table2.common_field;

appliquer dans notre exemple de tableau:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 INNER JOIN TableB
    ON TableA.id = TableB.id2;

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 le tableau a, ainsi que toutes les lignes communes sélectionnées dans le tableau B.

syntaxe

SELECT table1.column1, table2.column2...
  FROM table1
  LEFT JOIN table2
    ON table1.common_field = table2.common_field;

appliquer 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

RIGHT JOIN

Note : donnera toutes les lignes sélectionnées dans le tableau B, plus toutes les lignes sélectionnées communes dans le tableau A.

syntaxe

SELECT table1.column1, table2.column2...
  FROM table1
 RIGHT JOIN table2
    ON table1.common_field = table2.common_field;

appliquer 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

Note : toutes les valeurs sélectionnées des deux tableaux seront retournées.

syntaxe

SELECT table1.column1, table2.column2...
  FROM table1
  FULL JOIN table2
    ON table1.common_field = table2.common_field;

appliquer 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 les jointures internes de l'ordre n'a pas d'importance

pour (à gauche), Droit ou complet) jointures extérieures,la matière de l'ordre

mieux d'aller vérifier ce lien il vous donnera des détails intéressants sur join order

514
répondu Arunprasanth K V 2018-09-11 11:36:01
la source

Autres questions sur sql mysql join inner-join outer-join