Jointure interne vs jointure externe
La jointure interne et la jointure externe sont deux des méthodes de jointure SQL utilisées dans le traitement des requêtes pour les bases de données. Elles appartiennent à la famille des clauses de jointure (les deux autres étant les jointures gauche et droite). Cependant, il existe une auto-jointure qui peut être utilisée dans des situations particulières. Le but de Join est de combiner des champs en utilisant les valeurs communes aux deux tables. Ces jointures combinent des enregistrements de plusieurs tables dans une base de données. Il crée des ensembles résultants, qui peuvent être enregistrés comme une autre table.
Qu'est-ce que la jointure interne ?
La jointure SQL la plus couramment utilisée est la jointure interne. Il peut être considéré comme le type de jointure par défaut utilisé dans les applications. La jointure interne utilise le prédicat de jointure pour combiner deux tables. En supposant que les deux tables sont A et B, le prédicat de jointure comparera les lignes de A et B pour trouver toutes les paires qui satisfont le prédicat. Les valeurs de colonne de toutes les lignes satisfaites des tables A et B sont combinées pour créer le résultat. Il peut être considéré comme prenant d'abord la jointure croisée (produit cartésien) de tous les enregistrements, puis ne renvoyant que les enregistrements qui satisfont le prédicat de jointure. Cependant, en réalité, le produit cartésien n'est pas calculé car il est très inefficace. La jointure par hachage ou la jointure tri-fusion est utilisée à la place.
Qu'est-ce qu'une jointure externe ?
Contrairement à la jointure interne, la jointure externe conserve tous les enregistrements même si elle ne trouve pas d'enregistrement correspondant. Cela signifie que la jointure externe a besoin d'un enregistrement pour trouver un enregistrement correspondant pour qu'il apparaisse dans le résultat. Au lieu de cela, il renverra tous les enregistrements, mais les enregistrements sans correspondance auront des valeurs nulles. Les jointures externes sont divisées en trois sous-catégories. Ce sont la jointure externe gauche, la jointure externe droite et la jointure externe complète. Cette différenciation est basée sur la ligne de la table (table de gauche, table de droite ou les deux tables) qui est conservée lorsque des enregistrements sans correspondance sont trouvés. Les jointures externes gauches (également appelées simplement jointure gauche) conservent tous les enregistrements de la table de gauche. Cela signifie que même si le nombre d'enregistrements correspondants est zéro, il y aura toujours des enregistrements dans la table de résultats, mais aura des valeurs nulles pour toutes les colonnes de B. En d'autres termes, toutes les valeurs de la table de gauche sont renvoyées avec les valeurs correspondantes de droite table (ou des valeurs nulles lorsqu'elles ne correspondent pas). Si les valeurs de plusieurs lignes du tableau de gauche correspondent à une seule ligne du tableau de droite, la ligne du tableau de droite sera répétée si nécessaire. La jointure externe droite est assez similaire à la jointure externe gauche, mais le traitement des tables est révéré. Cela signifie que le résultat aura toutes les lignes de la table de droite au moins une fois avec des valeurs de table de gauche correspondantes (et des valeurs nulles pour les valeurs de droite sans correspondance). La jointure externe complète est plus complète que les jointures externes gauche et droite. Il en résulte la combinaison de l'effet de l'application de l'extérieur gauche et droit joint ensemble.
Quelle est la différence entre Inner Join et Outer Join ?
Inner Join ne conserve pas les lignes sans correspondance dans le résultat, mais la jointure externe conservera tous les enregistrements d'au moins une table (selon la jointure externe utilisée). Ainsi, le comportement consistant à ne pas avoir d'informations présentes sur les lignes sans correspondance dans la table de résultats n'est pas souhaitable, vous devez toujours utiliser l'une des jointures externes (à la place de la jointure interne). La jointure interne peut ne pas produire de résultat si aucune correspondance n'est trouvée. Mais la jointure externe produira toujours une table résultante, même sans lignes correspondantes. La jointure interne renverra toujours des tables avec des valeurs (si elles sont renvoyées). Mais les jointures externes peuvent entraîner des tables avec des valeurs nulles.