Ces deux jointures me donneront les mêmes résultats:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
contre
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
Existe-t-il une différence entre les déclarations de performance et autres?
Est-ce différent entre les différentes implémentations SQL?
Ils sont fonctionnellement équivalents, mais INNER JOIN
peut être un peu plus clair à lire, en particulier si la requête contient d'autres types de jointure (c'est-à-dire LEFT
ou RIGHT
ou CROSS
) inclus dans la requête. .
Non, il n'y a pas de différence, pur sucre syntaxique .
INNER JOIN = JOIN
INNER JOIN est le valeur 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 Word OUTER est facultatif, ou vous pouvez spécifier CROSS JOIN.
OR
Pour une jointure interne, la syntaxe est la suivante:
SÉLECTIONNER ...
DE LA TABLEA
[INNER] JOIN TableB(en d'autres termes, le mot clé "INNER" est facultatif - les résultats sont identiques, avec ou sans)
De même avec OUTER JOINs
, le mot "OUTER"
est facultatif. C'est le mot-clé LEFT
ou RIGHT
qui fait de la JOIN
un "OUTER" JOIN
.
Cependant, pour une raison quelconque, j'utilise toujours "OUTER"
comme dans LEFT OUTER JOIN
et jamais LEFT JOIN
, mais je n'utilise jamais INNER JOIN
, mais j'utilise plutôt "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
Est-ce différent entre les différentes implémentations SQL?
Oui, Microsoft Access ne permet pas que join
. Il nécessite inner join
.
Comme le disent déjà les réponses, il n'y a pas de différence dans votre exemple.
Le bit de grammaire pertinent est documenté ici
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Montrer que tous sont optionnels. La page précise que
INNER
Spécifie que toutes les paires de lignes correspondantes sont renvoyées. Élimine les lignes sans correspondance des deux tables. Lorsqu'aucun type de jointure n'est spécifié, il s'agit du type par défaut .
La grammaire indique également qu’il est une fois où la INNER
est requise . Lorsque vous spécifiez un indice de jointure.
Voir l'exemple ci-dessous
CREATE TABLE T1(X INT);
CREATE TABLE T2(Y INT);
SELECT *
FROM T1
LOOP JOIN T2
ON X = Y;
SELECT *
FROM T1
INNER LOOP JOIN T2
ON X = Y;