J'ai donc regardé sur Internet au cours de la dernière heure, lisant et cherchant la réponse définitive à cette question simple.
Quelle est la valeur par défaut de JOIN dans MySQL?
SELECT * FROM t1 JOIN t2
Est-ce la même chose que
SELECT * FROM t1, t2
OR
SELECT * FROM t1 INNER JOIN t2
Autre question connexe, lorsque vous utilisez les clauses "WHERE", est-ce la même chose que JOIN ou INNER JOIN?
Pour le moment, je pense qu'un JOIN autonome est identique à l'utilisation de virgules et de clauses WHERE.
En écriture MySQL, JOIN
non qualifiée implique INNER JOIN
. En d'autres termes, la variable INNER
dans INNER JOIN
est facultative. INNER
et CROSS
sont des synonymes dans MySQL. Pour plus de clarté, j'écris JOIN
ou INNER JOIN
si j'ai une condition de jointure et CROSS JOIN
si je n'ai pas de condition.
La syntaxe autorisée pour les jointures est décrite dans la documentation .
À l'heure actuelle, je pense qu'un JOIN autonome n'est rien de plus (identique à) en utilisant des virgules et des clauses WHERE.
L'effet est le même, mais l'histoire derrière eux est différente. La syntaxe par virgule provient de la norme ANSI-89. Cependant, cette syntaxe pose un certain nombre de problèmes. C'est pourquoi le mot-clé JOIN a été introduit dans la norme ANSI-92.
Je vous recommande fortement d'utiliser always la syntaxe JOIN plutôt que la virgule.
T1 JOIN T2 ON ...
est plus lisible que T1, T2 WHERE ...
.Ce sont tous équivalents et égaux à, CROSS JOIN
.
Il existe certaines différences entre l’utilisation de la virgule et de la syntaxe [INNER | CROSS] JOIN
, ce qui peut être important pour joindre des tables supplémentaires. Presque tout ce que vous avez besoin de savoir est décrit ici dans MySQL JOIN
documentation .