1259 votes

Différence entre JOIN et INNER JOIN

Ces deux jointures me donneront les mêmes résultats :

SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK

vs

SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK

Y a-t-il une différence entre les déclarations en matière de performance ou autre ?

Est-il différent entre les différents SQL mises en œuvre ?

5 votes

8 votes

À titre d'information, CROSS JOIN est un type de jointure qu'il est bon de connaître (il diffère de INNER JOIN).

3 votes

Selon la spécification ANSI SQL 92, elles sont identiques : "3) Si une <jonction qualifiée> est spécifiée et qu'un <type de jonction> n'est pas spécifié, alors INNER est implicite".

1364voto

palehorse Points 8268

Ils sont fonctionnellement équivalents, mais INNER JOIN peut être un peu plus claire à lire, en particulier si la requête comporte d'autres types de jointures (par ex. LEFT ou RIGHT ou CROSS ) qu'il contient.

15 votes

Est-ce vrai pour toutes les bases de données (par exemple SQL, postgres ?) Quelqu'un connaît-il un lien vers la documentation expliquant cela ?

10 votes

29 votes

@Ivanzinho : Les frappes au clavier ne sont pas la mesure de la complexité des requêtes ou des programmes. La complexité de la vie réelle vient de la maintenabilité, où la lisibilité joue un rôle majeur. Le fait que lorsqu'il est indiqué INNER JOIN, vous pouvez être sûr de ce qu'il fait et qu'il est censé être juste cela, alors qu'un simple JOIN vous laissera, ou laissera quelqu'un d'autre, se demander ce que la norme dit de l'implémentation et si le INNER/OUTER/LEFT a été laissé de côté par accident ou à dessein.

720voto

Damian Drygiel Points 3230

Une image vaut plus que des centaines de mots :

enter image description here

Avec l'aimable autorisation de CodeProject

308voto

Quassnoi Points 191041

Non, il n'y a aucune différence, pure sucre syntaxique .

32 votes

Je n'appellerais pas ça du sucre syntaxique. Type de jointure "par défaut", "raccourci", ou "alias", peut-être.

81 votes

En informatique, le sucre syntaxique est la syntaxe d'un langage de programmation conçue pour rendre les choses plus faciles à lire ou à exprimer. . Je crois que la capacité d'omettre INNER relève de cette définition.

18 votes

Si vous appliquez la définition de manière très littérale, oui, mais j'ai toujours considéré qu'elle était réservée à des types de syntaxe plus intéressants, et pas seulement à des noms alternatifs pour les choses.

192voto

net_prog Points 2024

JOINTURE INTERNE = JOINTURE

INNER JOIN est le par défaut si vous ne spécifiez pas le type lorsque vous utilisez le mot JOIN.

Vous pouvez également utiliser LEFT OUTER JOIN ou RIGHT OUTER JOIN, auquel cas le mot OUTER est facultatif, ou vous pouvez spécifier CROSS JOIN.

OU

Pour une jointure interne, la syntaxe est :

SELECT ...
FROM TableA
[INNER] JOIN TableB

(en d'autres termes, le mot-clé "INNER" est en option - les résultats sont les mêmes avec ou sans elle)

58voto

Kristen Points 2583

De même avec OUTER JOINs le mot "OUTER" est facultatif. C'est le LEFT ou RIGHT qui rend le JOIN un "OUTER" JOIN .

Cependant, pour une raison quelconque, j'utilise toujours "OUTER" dans le cas de LEFT OUTER JOIN et jamais LEFT JOIN mais je n'utilise jamais INNER JOIN mais je préfère utiliser "JOIN" :

SELECT ColA, ColB, ...
FROM MyTable AS T1
     JOIN MyOtherTable AS T2
         ON T2.ID = T1.ID
     LEFT OUTER JOIN MyOptionalTable AS T3
         ON T3.ID = T1.ID

27 votes

Je suis le contraire de vous : Je dis toujours "INNER JOIN" mais je n'utilise jamais OUTER ; donc "LEFT JOIN" et "RIGHT JOIN". Je suppose que je garde mon nombre de caractères constant !

10 votes

Il n'y a pas de concept de direction sur une jointure interne. Les jointures externes peuvent produire des ensembles de résultats non appariés et ceux-ci peuvent varier en fonction de la direction. Les jointures internes nécessitent une correspondance, donc la direction n'a pas d'importance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X