Maison >base de données >tutoriel mysql >Séparés par des virgules ou CROSS JOIN : quelle syntaxe SQL devriez-vous utiliser pour les produits cartésiens ?
Les opérations de base de données nécessitent souvent de combiner les données de plusieurs tables. Cet article examine deux méthodes de création de produits cartésiens : la syntaxe séparée par des virgules et l'opérateur CROSS JOIN
.
L'instruction SELECT * FROM A, B
utilise des virgules pour joindre les tables A et B, générant ainsi un produit cartésien. Cela signifie que chaque ligne du tableau A est associée à chaque ligne du tableau B, quelles que soient les relations entre elles.
CROSS JOIN
SyntaxeL'instruction SELECT * FROM A CROSS JOIN B
utilise explicitement l'opérateur CROSS JOIN
pour obtenir le même résultat de produit cartésien que la méthode séparée par des virgules.
Fait intéressant, il n'y a pas de différence de performances substantielle entre ces deux approches. Les deux produisent toutes les combinaisons de lignes possibles à partir des tables impliquées.
Malgré leur équivalence fonctionnelle, CROSS JOIN
est généralement préféré. En effet, elle adhère à la norme SQL-92, contrairement à la méthode séparée par des virgules (qui est considérée comme la syntaxe SQL-89). L'ancienne syntaxe séparée par des virgules ne prenait pas en charge nativement les jointures externes (LEFT, RIGHT, FULL), ce qui entraînait des implémentations spécifiques aux bases de données et des problèmes de portabilité. Syntaxe de jointure externe standardisée SQL-92, ce qui fait de CROSS JOIN
le choix le plus cohérent et le plus portable.
Bien que les deux syntaxes créent des produits cartésiens identiques, CROSS JOIN
est l'approche recommandée pour sa conformité SQL-92, garantissant un comportement cohérent sur différents systèmes de bases de données et une meilleure compatibilité avec les opérations de jointure externe.
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!