Inner Join vs Outer Join
Jointure interne et jointure externe sont deux des méthodes de jointure SQL utilisées dans le traitement des requêtes pour les bases de données. Ils appartiennent à la famille des clauses de jointure (les deux autres étant les jointures gauche et droite). Cependant, il existe une auto-association qui peut être utilisée pour des situations spéciales. La jointure a pour but de combiner des champs en utilisant les valeurs communes aux deux tables. Ces jointures combinent des enregistrements de plusieurs tables d'une base de données. Il crée des ensembles résultants, qui peuvent être enregistrés dans une autre table..
Qu'est-ce que Inner Join??
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 join 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 de B pour rechercher toutes les paires satisfaisant 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 satisfaisant le prédicat de jointure. Cependant, en réalité, le produit cartésien n'est pas calculé car il est très inefficace. Une jointure de hachage ou une jointure de tri-fusion est utilisée.
Quelle est la 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 afin 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. Ils sont laissés jointure externe, jointure externe droite et jointure externe complète. Cette différenciation est basée sur la ligne de la table (table gauche, table droite ou les deux tables) qui est conservée lorsque des enregistrements non appariés sont trouvés. Les jointures externes gauche (é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 égal à zéro, il contiendra 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 NULL quand elles ne correspondent pas). Si les valeurs de plusieurs lignes de la table de gauche correspondent à une seule ligne de la table de droite, la ligne de la table de droite sera répétée selon les besoins. La jointure externe droite est assez semblable à la jointure externe gauche, mais le traitement des tables est révéré. Cela signifie que le résultat aura au moins une fois toutes les lignes de la table de droite avec les valeurs correspondantes de la table de gauche (et les valeurs NULL 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 une combinaison de l’effet de l’application à la fois des joints extérieurs gauche et droit joints.
Quelle est la différence entre jointure interne et jointure externe?
La jointure interne ne conserve pas les lignes sans correspondance dans le résultat, mais la jointure externe conserve tous les enregistrements d'au moins une table (en fonction de la jointure externe utilisée). Par conséquent, le fait de ne pas avoir d’informations sur des lignes non appariées dans la table de résultats n’est pas souhaitable; vous devez toujours utiliser l’une des jointures externes (au lieu 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. Les jointures internes renverront toujours les tables avec des valeurs (si elles sont renvoyées). Mais les jointures externes peuvent entraîner des tables avec des valeurs null.