Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é o comportamento padrão do MySQL JOIN, INNER ou OUTER?


No MySQL escrevendo JOIN unqualified implica INNER JOIN . Em outras palavras, o INNER em INNER JOIN é opcional. INNER e CROSS são sinônimos no MySQL. Para maior clareza, escrevo JOIN ou INNER JOIN se eu tiver uma condição de junção e CROSS JOIN se eu não tiver condição.

A sintaxe permitida para junções está descrita na documentação .

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, existem 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 que T1, T2 WHERE ... .
  • É mais fácil de manter porque os relacionamentos e 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 uma está faltando.