Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est le comportement MySQL JOIN par défaut, INNER ou OUTER ?

Dans MySQL écrire JOIN non qualifié implique INNER JOIN . En d'autres termes, le INNER dans INNER JOIN est facultatif. 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'effet est le même, mais l'histoire derrière eux est différente. La syntaxe de la virgule est issue de la norme ANSI-89. Cependant, il existe un certain nombre de problèmes avec cette syntaxe, c'est pourquoi dans la norme ANSI-92, le mot-clé JOIN a été introduit.

Je vous recommande fortement de toujours utilisez la syntaxe JOIN plutôt que la virgule.

  • T1 JOIN T2 ON ... est plus lisible que T1, T2 WHERE ... .
  • Il est plus facile à gérer car les relations entre les tableaux et les filtres sont clairement définis plutôt que mélangés.
  • La syntaxe JOIN est plus facile à convertir en OUTER JOIN que la syntaxe virgule.
  • Le mélange de la virgule et de la syntaxe JOIN dans la même instruction peut générer des erreurs curieuses en raison des règles de priorité.
  • Il est moins probable de créer accidentellement un produit cartésien lors de l'utilisation de la syntaxe JOIN en raison d'une clause de jointure oubliée, car les clauses de jointure sont écrites à côté des jointures et il est facile de voir s'il en manque une.