Maison >base de données >tutoriel mysql >Comment l'opérateur Oracle ( ) crée-t-il des jointures externes et pourquoi devriez-vous l'éviter ?

Comment l'opérateur Oracle ( ) crée-t-il des jointures externes et pourquoi devriez-vous l'éviter ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-20 02:51:13418parcourir

How Does Oracle's ( ) Operator Create Outer Joins, and Why Should You Avoid It?

Opérateur d'Oracle ( ) : une approche héritée des jointures externes

Les anciens codes SQL utilisent souvent l'opérateur Oracle ( ), une syntaxe peu familière à de nombreux développeurs. Cet opérateur était vital pour créer des OUTER JOIN avant la norme ANSI-89, qui manquait de support explicite OUTER JOIN.

L'opérateur ( ) crée essentiellement un LEFT OUTER JOIN. Il permet aux lignes d'une table (disons la table 'b') de se joindre aux lignes d'une autre table ('a') en fonction d'un champ d'ID spécifié. Si une ligne dans « b » n'a pas de ligne correspondante dans « a », les colonnes correspondantes de « b » contiendront des valeurs NULL dans l'ensemble de résultats.

Supprimer le ( ) modifierait la jointure en INNER JOIN, renvoyant uniquement les lignes avec les ID correspondants dans les deux tables. Ainsi, le ( ) est crucial lorsque vous avez besoin de toutes les lignes d'une table, en acceptant les valeurs NULL potentielles pour les lignes sans correspondance de l'autre.

Malgré sa fonctionnalité, Oracle déconseille fortement l'utilisation de l'opérateur ( ). Il n'est pas standard (non conforme à la norme ANSI), ce qui entrave la portabilité vers d'autres systèmes de bases de données. De plus, il est soumis à des règles et limitations uniques que l'on ne trouve pas dans les OUTER JOIN créées à l'aide de la syntaxe de clause FROM standard.

Pour une meilleure compatibilité, de meilleures performances et une meilleure adhésion aux meilleures pratiques modernes, Oracle recommande cette syntaxe OUTER JOIN standard :

<code class="language-sql">SELECT ...
FROM a
LEFT JOIN b ON b.id = a.id</code>

Cela permet d'obtenir le même résultat que l'opérateur ( ) tout en tirant parti des avantages de la syntaxe ANSI-92 et des plans d'exécution de requêtes optimisés d'Oracle.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn