Jointures dans SQL Server : types et exemples

⚡ Résumé intelligent

Dans SQL Server, les jointures combinent les lignes de deux tables ou plus en fonction d'une colonne liée, en utilisant les jointures INNER, LEFT OUTER, RIGHT OUTER et FULL OUTER pour contrôler quelles lignes correspondantes et non correspondantes apparaissent dans le résultat.

  • 🔗 Objectif : Une jointure permet de récupérer des données liées provenant de deux tables ou plus en faisant correspondre une colonne commune, généralement une clé.
  • (I.e. JOINTURE INTERNE: INNER JOIN ne renvoie que les lignes où la condition de jointure est vraie dans les deux tables.
  • ⬅️ JOINTURE EXTERNE GAUCHE : LEFT OUTER JOIN renvoie chaque ligne de la table de gauche, en remplissant les colonnes non appariées de la table de droite avec NULL.
  • ➡️ JOINTURE EXTERNE DROITE : RIGHT OUTER JOIN renvoie chaque ligne de la table de droite, en remplissant les colonnes non appariées de la table de gauche avec NULL.
  • (I.e. JOINT EXTÉRIEUR COMPLET : La jointure externe complète (FULL OUTER JOIN) renvoie toutes les lignes des deux tables, en utilisant NULL lorsque la condition n'est pas remplie.
  • (I.e. À condition: La clause ON nomme les colonnes qui relient les tables, le plus souvent une paire clé primaire/clé étrangère.

Jointures dans SQL Server : exemples de jointures internes, externes gauches, droites et externes complètes

Que sont les jointures dans SQL Server ?

Les données peuvent être récupérées à partir de plusieurs tables en utilisant l'instruction JOIN dans SQL ServerUne jointure (JOIN) combine les lignes de deux tables ou plus en fonction d'une colonne commune, le plus souvent une colonne de correspondance. clé primaire assorti à un clé étrangèreIl existe principalement quatre types de jointures dans SQL Server :

  • Jointure interne / jointure simple
  • Jonction extérieure gauche / jonction gauche
  • Jonction extérieure droite / jonction droite
  • JOINTURE EXTÉRIEURE COMPLÈTE

Le tableau ci-dessous récapitule les lignes renvoyées par chaque type de jointure :

Type de jointure Lignes renvoyées
JOINTURE INTERNE Seules les lignes où la condition de jointure correspond dans les deux tables.
JOINT EXTERIEUR GAUCHE Toutes les lignes du tableau de gauche, plus les lignes correspondantes du tableau de droite (NULL lorsqu'aucune ne correspond).
JOINT EXTÉRIEUR DROIT Toutes les lignes du tableau de droite, plus les lignes correspondantes du tableau de gauche (NULL lorsqu'aucune ne correspond).
JOINTURE EXTÉRIEURE COMPLÈTE Toutes les lignes des deux tables, avec des valeurs NULL lorsque la condition n'est pas remplie.

Les exemples ci-dessous utilisent deux les tablesLes tables « Étudiants » et « Frais de scolarité » sont jointes sur la base de leur colonne d'admission commune. Chaque section explique un type de jointure avec sa syntaxe, un exemple de requête et le résultat.

JOINTURE INTERNE

Ce type d’ SQL Server La fonction JOIN renvoie les lignes de toutes les tables pour lesquelles la condition de jointure est vraie. Elle accepte la syntaxe suivante :

SELECT columns
FROM table_1 
INNER JOIN table_2
ON table_1.column = table_2.column;

Nous utiliserons les deux tableaux suivants pour illustrer cela. Le tableau « Étudiants » ci-dessous répertorie chaque étudiant et son numéro d’admission :

Tableau des étudiants listant les colonnes admission, prénom et nom

Le tableau des frais ci-dessous indique le montant payé pour chaque numéro d'admission :

Tableau des frais indiquant le nombre d'admissions et la colonne montant_payé

La commande suivante illustre une jointure interne (INNER JOIN) dans SQL Server à l'aide d'un exemple :

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
INNER JOIN Fee
ON Students.admission = Fee.admission

La commande renvoie le résultat suivant, affichant uniquement les numéros d'admission présents dans les deux tableaux :

Résultat de la jointure interne ne montrant que les étudiants dont l'admission figure dans les deux tableaux

Nous pouvons identifier les étudiants qui ont réglé leurs frais d'inscription. Nous avons utilisé la colonne présentant des valeurs communes aux deux tableaux, à savoir la colonne « admission ».

JOINT EXTERIEUR GAUCHE

Ce type de jointure renvoie toutes les lignes de la table de gauche ainsi que les enregistrements de la table de droite ayant des valeurs correspondantes. Par exemple :

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
LEFT OUTER JOIN Fee
ON Students.admission = Fee.admission

Le code renvoie le résultat suivant, keeping chaque étudiant, même lorsqu'aucun relevé de frais ne correspond :

Jointure externe gauche résultat keeping Chaque étudiant se range avec NULL pour des frais non appariés

Les enregistrements sans valeurs correspondantes sont remplacés par des NULL dans les colonnes respectives.

JOINT EXTÉRIEUR DROIT

Ce type de jointure renvoie toutes les lignes du tableau de droite et uniquement celles dont les valeurs correspondent dans le tableau de gauche. Par exemple:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
RIGHT OUTER JOIN Fee
ON Students.admission = Fee.admission

L'instruction OUTER JOIN dans SQL Server renvoie le résultat suivant :

Jointure extérieure droite résultat keeping chaque ligne de frais et les lignes d'étudiants correspondantes

La raison du résultat ci-dessus est que toutes les lignes du tableau Frais sont disponibles dans le tableau Étudiants lorsqu'elles correspondent dans la colonne d'admission.

JOINTURE EXTÉRIEURE COMPLÈTE

Ce type de jointure renvoie toutes les lignes des deux tables, avec des valeurs NULL lorsque la condition de jointure n'est pas vérifiée. Par exemple :

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
FULL OUTER JOIN Fee
ON Students.admission = Fee.admission

Le code renvoie le résultat suivant pour les requêtes FULL OUTER JOIN dans SQL, en combinant chaque ligne des deux tableaux :

Résultat de la jointure externe complète combinant toutes les lignes Students et Fee avec des valeurs NULL pour les espaces vides.

FAQ

Une jointure croisée (CROSS JOIN) renvoie le produit cartésien de deux tables, associant chaque ligne de la première table à chaque ligne de la seconde. Elle ne comporte pas de condition ON ; ainsi, une table de 10 lignes et une autre de 5 lignes produisent 50 lignes.

On utilise une jointure interne (SELF JOIN) : la table est listée deux fois avec des alias différents, puis jointe sur une colonne commune pour comparer les lignes d'une même table. Cette méthode est courante pour les données hiérarchiques, comme l'association de chaque employé à son responsable.

Une jointure (JOIN) combine les colonnes de tables liées côte à côte, en faisant correspondre les lignes selon une condition. L'union (UNION) empile verticalement les résultats de deux requêtes de sélection (SELECT), en ajoutant des lignes. Une jointure élargit le résultat ; une union l'allonge.

Oui. La clause ON permet de tester plusieurs colonnes liées par AND, par exemple ON a.col1 = b.col1 AND a.col2 = b.col2. Les conditions composites sont courantes lorsqu'une seule colonne ne permet pas d'identifier une ligne de manière unique.

La clause ON définit la correspondance entre les tables et est appliquée lors de l'exécution de la jointure. La clause WHERE filtre ensuite le résultat combiné. Avec les jointures externes (OUTER JOIN), le déplacement d'une condition entre les tables peut modifier les lignes renvoyées.

Oui. Écrire JOIN sans préfixe correspond par défaut à INNER JOIN, qui ne renvoie donc que les lignes correspondantes. Ajouter LEFT, RIGHT ou FULL avant OUTER JOIN modifie les lignes non correspondantes qui sont conservées dans le résultat.

Oui. Copilote GitHub Il est possible de rédiger des requêtes INNER JOIN, LEFT JOIN, RIGHT JOIN et FULL OUTER JOIN à partir d'une invite en langage naturel. Il est essentiel de toujours vérifier la condition ON et le type de jointure afin que le résultat corresponde à vos attentes.

Les assistants d'IA et d'apprentissage automatique suggèrent le type de jointure approprié, génèrent des conditions ON multi-tables et signalent les clés manquantes ou les produits cartésiens accidentels. Ils peuvent également recommander des index pour les colonnes de jointure. Le développeur vérifie chaque suggestion avant son exécution.

Résumez cet article avec :