No MySQL, a escrita JOIN
não qualificada implica INNER JOIN
. Em outras palavras, o INNER
in INNER JOIN
é opcional. INNER
e CROSS
são sinônimos no MySQL. Para maior clareza eu escrevo JOIN
ou INNER JOIN
se eu tiver uma condição de junção e CROSS JOIN
se eu não tiver uma condição.
A sintaxe permitida para junções é descrita na documentação .
No momento, estou pensando que um JOIN autônomo nada mais é do que (idêntico a) usar vírgulas e cláusulas WHERE.
O efeito é o mesmo, mas a história por trás deles é diferente. A sintaxe da vírgula é do padrão ANSI-89. No entanto, há vários problemas com essa sintaxe, portanto, no padrão ANSI-92, a palavra-chave JOIN foi introduzida.
Eu recomendo fortemente que você sempre use a sintaxe JOIN em vez da vírgula.
T1 JOIN T2 ON ...
é mais legível do que T1, T2 WHERE ...
.
- É mais fácil de manter porque os relacionamentos e os filtros da tabela são claramente definidos, em vez de misturados.
- A sintaxe JOIN é mais fácil de converter em OUTER JOIN do que a sintaxe de vírgula.
- Misturar a vírgula e a sintaxe JOIN na mesma instrução pode gerar erros curiosos devido às regras de precedência.
- É menos provável criar acidentalmente um produto cartesiano ao usar a sintaxe JOIN devido a uma cláusula de junção esquecida, porque as cláusulas de junção são escritas ao lado das junções e é fácil ver se alguma está faltando.