
Tableau de comparaison
Base de comparaison | Jointure externe gauche | Jointure extérieure droite | Jointure complète |
---|---|---|---|
De base | Tous les tuples de la table de gauche restent dans le résultat. | Tous les tuples de la table de droite restent dans le résultat. | Tous les nuplets de gauche et de droite restent dans le résultat. |
NULL Extension | Les tuples de la table de gauche qui n'ont pas de tuple correspondant dans la table de droite sont étendus avec la valeur NULL pour les attributs de la table de droite. | Les tuples de la table de droite qui n'ont pas de tuple correspondant dans la table de gauche sont étendus avec la valeur NULL pour les attributs de la table de gauche. | Les n-uplets de gauche ainsi que ceux de la table de droite qui n'ont pas les n-uplets correspondants dans les tableaux de droite et de gauche sont étendus avec la valeur NULL pour les attributs des tableaux de droite et de gauche. |
Définition de jointure externe gauche
Supposons que nous ayons “ Table_A Left Outer Join Table_B “. Donc Table_A est notre table de gauche, comme il apparaît à gauche de l' opération Jointure externe gauche et Table_B est notre table de droite .
Initialement, la jointure interne serait appliquée à Table_A et Table_B, qui renverront tous les tuples correspondants des tables A et B.
Ensuite, il retournera tous les nuplets de Table_A qui n'ont pas de tuple correspondant dans Table_B. Ainsi, les n-uplets résultants seraient remplis avec des valeurs NULL pour les attributs de la table de droite.
Par conséquent, le résultat obtenu dans la jointure externe gauche conserve tous les n-uplets de la table de gauche et uniquement les n-uplets correspondants de la table de droite.
Discutons de Left Outer Join avec un exemple; nous avons deux tableaux ci-dessous, Table des étudiants et Table des départements .

Nous allons maintenant appliquer la jointure externe gauche, sur la table des étudiants et des départements.
SELECT * FROM Student LEFT OUTER JOIN Department
ON étudiant. Student_ID = Department.Student_ID
Dans la requête ci-dessus, la table Student est la table de gauche et la table Department est la table de droite. Ainsi, selon Left Outer Join, le résultat doit avoir tous les n-uplets de la table Student et uniquement les n-uplets correspondants de la table Department.

Définition de jointure externe droite
Supposons que nous ayons « Table_A, une table de jointure externe droite ». Donc Table_A est notre table de gauche, comme il apparaît à gauche de l' opération Right Outer Join et Table_B est notre table de droite .
Comme dans Jointure externe gauche, la jointure interne devait initialement être appliquée à Table_A et à Table_B, qui renverraient tous les tuples correspondants des tables A et B.
Ensuite, il retournera tous les nuplets de Table_B qui n'ont pas de tuple correspondant dans Table_A. De telle sorte que les nuplets résultants soient remplis avec des valeurs NULL pour les attributs de la table de gauche.
Par conséquent, le résultat obtenu à partir de la jointure externe droite conserve tous les nuplets de la table de droite et uniquement les nuplets correspondants de la table de gauche.
Discutons de Right Outer Join avec un exemple; ci-dessus, nous avons deux tables, Student Table et Department Table.
Nous allons maintenant appliquer la table Jointure extérieure droite aux tables Student et Department.
SELECT * FROM Student RIGHT OUTER JOIN Département
ON étudiant. Student_ID = Department.Student_ID
Dans la requête ci-dessus, Student Table est notre table de gauche et Department Table est notre table de droite. Selon l'opération Right Outer Join, le résultat doit inclure tous les tuples de la table Department et uniquement les tuples correspondants de la table Student.

Définition de jointure complète externe
Supposons que nous ayons « Table_A Full Outer Join Table_B ». Ainsi, Table_A est notre table de gauche, comme il apparaît à gauche de l'opération Jointure externe complète et Table_B, notre table de droite .
La jointure externe complète est la combinaison des deux jointures, jointure externe gauche et jointure externe droite . Initialement, il applique la jointure interne sur Table_A et Table_B pour extraire les nuplets correspondants des deux tables. Ensuite, il étend les nuplets de Table_A avec NULL qui n'ont pas de tuple correspondant dans Table_B. En outre, il étend les nuplets de Table_B avec NULL qui n'ont pas de tuple correspondant dans Table_A.
Par conséquent, Full Outer Join conserve tous les nuplets de la table de gauche et de droite, ainsi que les nuplets correspondants des deux tables.
Discutons de FULL Outer Join avec un exemple; nous avons deux tableaux ci-dessus, Student Table et Department Table.
Nous allons maintenant appliquer la table Jointure extérieure complète aux tables Student et Department.
SELECT * FROM Student FULL OUTER JOIN Département
ON étudiant. Student_ID = Department.Student_ID
Dans la requête ci-dessus, Student Table est notre table de gauche et Department Table est notre table de droite. Selon Full Outer Join, le résultat doit inclure tous les nuplets des deux tables.

Principales différences entre les jointures gauches, droites et externes
- Le résultat de Left Outer Join contient tous les tuples de la table de gauche. De même, le résultat de Right Outer Join contient tous les multiplets de la bonne table. Et le résultat de Full Outer Join contient tous les nuplets de la table de gauche et de droite.
- Dans Jointure externe gauche, les tuples de la table gauche qui ne possèdent pas de tuple correspondant dans la table droite sont étendus avec des valeurs Null pour les attributs de la table droite. En face, c’est le cas de Right Outer Join. Et dans Full Outer Join, les n-uplets des tables gauche et droite qui n'ont pas de n-uplets correspondants dans les tables droite et gauche sont respectivement étendus avec NULL pour les attributs des tables droite et gauche.
Conclusion:
Prenez soin de la position des noms de table dans une requête. Lorsque la position du nom de la table dans la requête décide si la table sera considérée comme une table de gauche ou de droite.