Maison >base de données >tutoriel mysql >SQL JOIN : USING, ON ou WHERE – Quelle syntaxe devez-vous choisir ?
Comparaison des méthodes SQL JOIN : USING, ON et WHERE
SQL fournit trois syntaxes pour effectuer les opérations JOIN : USING, ON et WHERE. Bien que ces syntaxes semblent similaires, elles peuvent affecter la lisibilité, l’exactitude et les performances des requêtes.
UTILISER la syntaxe
La syntaxeUSING utilise le mot clé USING
suivi d'un nom de colonne commun aux deux tables pour spécifier la colonne de jointure :
<code class="language-sql">SELECT * FROM a JOIN b USING(ID);</code>
Syntaxe ON
La syntaxeON utilise le mot-clé ON
et une expression d'égalité entre les colonnes jointes pour définir explicitement les conditions de jointure :
<code class="language-sql">SELECT * FROM a JOIN b ON a.ID = b.ID;</code>
Syntaxe WHERE
La syntaxe WHERE combine les conditions de jointure et de filtrage dans une clause WHERE :
<code class="language-sql">SELECT * FROM a, b WHERE a.ID = b.ID;</code>
Considérations relatives aux performances
Il n'y a pas de différence de performances significative entre ces options de syntaxe. Cependant, en raison d'une ambiguïté potentielle, notamment avec les requêtes impliquant des OUTER JOIN, la syntaxe WHERE n'est pas recommandée.
Différences sémantiques
La syntaxeUSING spécifie explicitement uniquement les colonnes de jointure, ce qui apporte de la clarté et réduit le risque de conditions de jointure incorrectes.
La syntaxeON autorise des conditions de jointure plus complexes, notamment des opérateurs d'inégalité (=, !=, >) ou des conditions de jointure supplémentaires (par exemple, AND/OR).
La syntaxe WHERE effectue implicitement une INNER JOIN basée sur l'égalité des colonnes spécifiées. Cela peut conduire à des produits cartésiens inattendus ou à des résultats incorrects pour les jointures externes.
Exemple de description
Considérez la requête suivante :
<code class="language-sql">FROM T1,T2,T3 WHERE T1.ID = T2.ID AND T1.foo = 'bar' AND T2.fish = 42</code>
Il n'est pas clair si T1.foo = 'bar' est une condition de jointure ou une condition de filtre.
La réécriture de la requête en utilisant la syntaxe ON peut apporter de la clarté :
<code class="language-sql">FROM T1 INNER JOIN T2 ON T1.ID = T2.ID WHERE T1.foo = 'bar' AND T2.fish = 42</code>
Conclusion
Bien que les options de syntaxe USING, ON et WHERE puissent toutes accomplir une opération JOIN, la syntaxe ON est généralement préférée en raison de sa plus grande lisibilité, exactitude et cohérence dans la gestion des jointures externes. La syntaxe USING apporte de la simplicité, tandis que la syntaxe WHERE doit être évitée en raison de son ambiguïté potentielle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!