Différence entre Inner Join et Outer Join
Quelle est la différence entre Inner Join et Outer Join ? – Les deux Inner Join et Outer Join peuvent être utilisées pour combiner des données provenant de deux tables ou plus. Cependant, il y a quelques différences clés! La différence clé entre (Inner Join) et (Outer Join) est la suivante : Inner Join ne renvoie que les tuples correspondants, par contre Outer Join retourne tous les tuples.
Table de comparaison
Inner Join | Outer Join | |
---|---|---|
Définition | Inner Join génère uniquement les tuples correspondants. | Outer Join affiche tous les tuples des deux tables. |
Base de données | Outer Join renvoie une base de données comparativement plus grande. | La taille potentielle d’une base de données renvoyée par Inner Join est relativement inférieure à Outer Join. |
Les types | Aucun type | Left Outer Join, Right Outer Join, et Full Outer Join. |
Définition de Inner Join
Inner Join renvoie le résultat de l’intersection de A et B
Supposons que vous avez deux tables A et B, chacune contenant une seule colonne a et b respectivement :
Table A Table B
+------+ +------+ | a | | b | +------+ +------+ | 1 | | 4 | | 2 | | 5 | | 3 | | 6 | | 4 | | 7 | | 5 | | 8 | | 6 | | 9 | +------+ +------+
Inner Join renvoie l’intersection des deux tables, c’est-à-dire les deux lignes qu’elles ont en commun.
SQL> SELECT * FROM A INNER JOIN B ON A.a = B.b;
Cela produit le résultat suivante :
+------+------+ | a | b | +------+------+ | 4 | 4 | | 5 | 5 | | 6 | 6 | +------+------+
Vous pouvez voir que seuls les tuples qui satisfaisant la condition A.a = B.b. Par conséquent, nous pouvons dire que Inner Join combine uniquement les tuples correspondants de deux tables.
Définition de Outer Join
Outer Join renvoie les résultats de l’union de A et B
Supposons les mêmes tables A et B, chacune contenant une seule colonne a et b respectivement :
Table A Table B
+------+ +------+ | a | | b | +------+ +------+ | 1 | | 4 | | 2 | | 5 | | 3 | | 6 | | 4 | | 7 | | 5 | | 8 | | 6 | | 9 | +------+ +------+
Contrairement à Inner Join, Outer Join génère tous les n-uplets. Outer Join est de trois types: Left Outer Join, Right Outer Join, et Full Outer Join.
- Left Outer Join: renvoie les lignes correspondantes dans la table droite et toutes les lignes dans la table gauche
- Right Outer Join: renvoie les lignes correspondantes dans la table gauche et toutes les lignes de la table droite
- Full Outer Join: renvoie toutes les lignes de toutes les tables. Peu importe s’il y a une correspondance ou non
Left Outer Join :
Revenons à notre exemple; Left Outer Join donnera toutes les lignes de A, plus toutes les lignes communes dans B.
SQL> SELECT * FROM A LEFT OUTER JOIN B on A.a = B.b;
Cela produit le résultat suivante :
+------+------+ | a | b | +------+------+ | 1 | null | | 2 | null | | 3 | null | | 4 | 4 | | 5 | 5 | | 6 | 6 | +------+------+
Right outer join :
Revenons à notre exemple; Right outer join donnera toutes les lignes dans B, plus toutes les lignes communes dans A.
SQL> SELECT * FROM A RIGHT OUTER JOIN B on A.a = B.b;
Cela produit le résultat suivante :
+------+------+ | a | b | +------+------+ | 4 | 4 | | 5 | 5 | | 6 | 6 | | null | 7 | | null | 8 | | null | 9 | +------+------+
Full outer join :
Revenons à notre exemple; Full outer join vous donnera l’union de A et B, c’est-à-dire toutes les lignes de A et toutes les lignes de B. Si quelque chose dans A n’a pas de donnée correspondante en B, alors la partie B est nulle et vice versa.
SQL> SELECT * FROM A FULL OUTER JOIN B on A.a = B.b;
Cela produit le résultat suivante :
+------+------+ | a | b | +------+------+ | 1 | null | | 2 | null | | 3 | null | | 4 | 4 | | 5 | 5 | | 6 | 6 | | null | 7 | | null | 8 | | null | 9 | +------+------+
Différences clés entre Inner Join et Outer Join
- La différence clé entre Inner Join et Outer Join est la suivante: Inner Join ne compare et ne combine que les tuples correspondants. Tandis que, Outer Join compare et combine tous les tuples des deux tables comparées.
- La taille de base de données du résultat obtenu à partir de Inner Join est plus petite que Outer Join.
- Il existe trois types de Outer Join: Il y a Left Outer Join, Right Outer Join, et Full Outer Join. Mais Inner Join n’a pas de tels types.
Conclusion:
Les deux jointures sont très utiles. L’utilisation dépend de l’exigence de l’utilisateur.