Recommandé, 2024

Choix De L'Éditeur

Différence entre les jointures gauches, droites et externes

Nous avons déjà abordé les différences entre jointure interne et jointure externe, où nous avons présenté un aperçu des types de jointure externe. Jointure externe est celle qui conserve les n-uplets dans le résultat qui aurait été perdu pendant l'opération de jointure. Dans cet article; nous allons discuter des différences entre les types de jointure externe. Il existe trois types de jointure externe; Jointure externe gauche, Jointure externe droite et Jointure externe complète. Les jointures gauche, droite et extérieure complète diffèrent par leur plan d'exécution et les résultats obtenus. Nous pouvons omettre un mot extérieur de jointure gauche, droite et externe complète. Examinons les différences entre gauche, droite et plein joint externe à l'aide du tableau de comparaison ci-dessous.

Tableau de comparaison

Base de comparaisonJointure externe gaucheJointure extérieure droiteJointure complète
De baseTous 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 ExtensionLes 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.

Observez le résultat obtenu avec Jointure externe gauche; il contient tous les nuplets de la table Student ainsi que les nuplets correspondants des tables Student et Department. Le nom de student_id de Jimmy, Joseph Harry de la table Student n'était pas présent dans la table Department. Par conséquent, les valeurs d'attribut de la table Department pour Jimmy, Joseph Harry sont étendues à NULL.

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.

Observez le résultat obtenu avec la jointure externe droite; il contient tous les nuplets de la table Department ainsi que les nuplets correspondants des tables Student et Department. Student_ID 10536 et 00954, de la table Department, ne sont pas présents dans la table Student. Par conséquent, la valeur d'attribut de Nom pour Student_ID 10536 et 00954 est étendue à NULL.

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.

Observez le résultat obtenu avec une jointure externe complète. il contient tous les nuplets de la table Student et Department ainsi que les nuplets correspondants des tables Student et Department. Student_id de Jimmy, Joseph Harry, soit 10026, 02256, 56362 respectivement de la table Student, n'était pas présent dans la table Department. Par conséquent, les valeurs d'attribut de la table Department pour Jimmy, Joseph Harry sont étendues à NULL . Les ID d' étudiant 10536 et 00954 de la table Department ne sont pas présents dans la colonne Student_ID de la table Student. Par conséquent, la valeur d'attribut de l'attribut Name pour Student_ID 10536 et 00954 est étendue à NULL .

Principales différences entre les jointures gauches, droites et externes

  1. 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.
  2. 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.

Top