SQLShack (Français)

Cet article vous donnera un aperçu complet, avec des exemples de la jointure externe SQL, y compris la jointure externe complète, droite et gauche, ainsi que l’union entre les jointures externes gauche et droite SQL.

Il est essentiel de comprendre le processus pour obtenir les données du multiple les tables. Un débutant peut ne pas avoir l’idée des jointures dans SQL Server. Dans cette astuce, nous allons prendre un aperçu des jointures SQL, apprendre SQL OUTER JOIN avec sa syntaxe, ses exemples et ses cas d’utilisation.

Dans un système de base de données relationnelle, il est recommandé de suivre les principes de normalisation, dans lequel, fondamentalement, nous divisons les grandes tables en tables plus petites. Dans une instruction select, nous pouvons récupérer les données de ces tables à l’aide de jointures. Nous pouvons joindre les tables et obtenir les champs requis à partir de ces tables dans le jeu de résultats. Ces tableaux doivent avoir un champ commun à relier les uns aux autres. Vous pouvez trouver des données réparties sur plusieurs bases de données et parfois il s’agit également d’une structure très complexe. Avec les jointures, nous pouvons joindre les données des multiples tables et bases de données de manière conviviale et représenter ces données dans l’application.

Nous pouvons représenter un SQL JOIN en utilisant l’image suivante

Il existe de nombreux types de jointure SQL dans SQL Server. Dans l’image suivante, vous pouvez voir les catégories de jointures SQL

Explorons en détail les jointures externes SQL dans la section à venir.

Vue d’ensemble de la jointure externe SQL

Nous utilisons la jointure externe SQL pour faire correspondre les lignes entre les tables. Nous pourrions vouloir obtenir des lignes de correspondance avec des lignes sans correspondance à partir d’une ou des deux tables. Nous avons les trois types suivants de JOINTES EXTERNES SQL.

  1. Jointure externe complète SQL
  2. Jointure externe gauche SQL
  3. Jointure externe droite SQL

Explorons chacune des jointures externes SQL avec des exemples.

Jointure externe complète SQL

Dans la jointure externe complète SQL, toutes les lignes des deux tables sont incluses . S’il y a des lignes sans correspondance, les valeurs NULL sont affichées.

Nous pouvons comprendre efficacement en utilisant des exemples. Créons un exemple de table et insérons-y des données.

Vous pouvez vous référer au modèle de données suivant des deux tables.

Insérez des données dans la table Employee avec le script suivant.

Insérez des données dans la table Departments

Nous pouvons représenter une relation logique entre deux tables à l’aide d’un diagramme de Venn. Dans un diagramme de Venn contient plusieurs cercles qui se chevauchent et chaque cercle représente une entité ou une table. La zone commune ou la zone de chevauchement dans le diagramme de Venn représente les valeurs communes entre les deux tables.

Par exemple, dans la capture d’écran suivante, nous avons deux cercles qui se chevauchent. Chaque cercle renvoie une table (Employé et Départements). Comprenons la jointure externe FULL en utilisant l’exemple suivant.

Nous avons un champ commun (EmpID) dans les deux tables; par conséquent, nous pouvons joindre la table avec cette colonne. Dans la requête suivante, nous avons défini le FULL OUTER JOIN entre les départements et la table Employee sur la colonne EMPID de la table.

1
2
3

SELECT *
FROM Employé
FULL OUTER JOIN Departments ON Employee.EmpID = Departments.EmpID;

La jointure externe complète SQL donne les lignes suivantes dans une sortie

  • Lignes correspondantes entre les deux tables
  • Lignes sans correspondance des deux tables (valeurs NULL )

Exécutons cette requête pour renvoyer la sortie de la requête Full Outer Join. Nous obtenons la sortie suivante.

Nous pouvons également voir quelques enregistrements avec des valeurs NULL. Comprenons cela mieux en utilisant un diagramme de Venn.

Dans la capture d’écran suivante, vous pouvez voir les informations suivantes

  • EmpID 1, 2,3,4,5 , 6,10 existe à la fois dans le tableau des employés et des services. Dans la sortie de la requête Full Outer Join, nous obtenons toutes ces lignes avec les données des deux tables
  • EmpID 7, 8, 9 existe dans la table Employee mais pas dans la table Departments. Il n’inclut aucune ligne correspondante dans la table des départements; donc; nous obtenons des valeurs NULL pour ces enregistrements

Maintenant, à des fins de démonstration, insérons un autre enregistrement dans les tableaux des départements . Dans cette requête, nous insérons EmpID 11 qui n’existe pas dans la table Employee.

Réexécutez la requête SQL Full Outer Join. Dans l’image suivante, vous obtenez une ligne supplémentaire avec des valeurs NULL. Nous n’avons aucune ligne correspondante pour EmpID 11 dans la table des employés.Pour cette raison, nous obtenons des valeurs NULL pour celui-ci dans la sortie.

En résumé, nous pouvons représenter la jointure externe complète SQL en utilisant le diagramme de Venn suivant. Nous obtenons ce qui est représenté dans la zone en surbrillance dans la sortie de Full Outer Join.

SQL FULL OUTER JOIN et WHERE clause

Nous pouvons ajouter une clause WHERE avec un SQL FULL OUTER JOIN pour obtenir des lignes sans données correspondantes entre les deux tables Join.

Dans la requête suivante, nous ajoutons une clause where à n’afficher que les enregistrements ayant des valeurs NULL.

1
2
3
4
5

SELECT *
FROM Employé
FULL OUTER JOIN Departments ON Employee.EmpID = Departments.EmpID
WHERE Employee.EmpID IS NULL
OR Departments.EmpID IS NULL;

Exécutez cette commande et affichez la sortie. Il ne renvoie que les lignes qui ne correspondent ni à la table Employee ni à la table Departments.

SQL LEFT OUTER JOIN

Dans une jointure externe gauche SQL, nous obtenons les lignes suivantes dans notre sortie.

  • Cela donne la sortie de la ligne correspondante entre les deux tables
  • Si aucun enregistrement ne correspond à partir du tableau de gauche, il affiche également les enregistrements avec des valeurs NULL

Exécutez le code suivant pour renvoyer la sortie SQL LEFT OUTER JOIN

1
2
3

SELECT *
FROM Employé
GAUCHE OUTER JOIN Départements ON Employee.EmpID = Departments.EmpID

Dans l’image suivante, vous pouvez voir que nous avons des valeurs NULL pour EmpID 7,8 et 9. Ces EmpID n’existe pas dans le côté droit Table Department.

Nous devons noter la position de placement de la table dans l’instruction Join. Actuellement, nous avons une table Employee sur le côté gauche et une table Departments sur le côté droit.

Réécrivons la requête et échangeons la position des tables dans la requête. Dans cette requête, nous avons la table Department en position gauche, donc la jointure externe gauche doit vérifier les valeurs de cette table et renvoyer une valeur NULL en cas d’incohérence.

Dans la capture d’écran suivante, vous pouvez voir qu’une seule valeur NULL pour EmpID 11. C’est parce que EmpID 11 n’est pas disponible dans la table Employee.

As un résumé, nous pouvons représenter SQL Left Outer Join en utilisant le diagramme de Venn suivant. Nous obtenons la zone en surbrillance dans la sortie de SQL Left Outer Join.

SQL Right OUTER JOIN

Dans SQL Right Outer Join, nous obtenons les lignes suivantes dans notre sortie.

  • Cela donne la sortie de la ligne correspondante entre les deux tables
  • Si aucun enregistrement ne correspond à la table de droite, il montre également les enregistrements avec des valeurs NULL

Exécutez la requête suivante pour obtenir la sortie de Right Outer Join

1
2
3

SELECT *
FROM Employee
RIGHT OUTER JOIN Departments ON Employee.EmpID = Departments.EmpID

Dans l’image suivante, vous pouvez voir que nous obtenons toutes les lignes correspondantes avec une ligne avec des valeurs NULL. La ligne de valeur nulle a EmpID 11 car elle n’existe pas dans la table Employee. Vous pouvez également remarquer que la position de la table Department est à la bonne position dans Join. Pour cette raison, nous n’obtenons pas les valeurs de la table Employee (position de gauche) qui ne correspondent pas à la table Department (côté droit).

Comme souligné précédemment, la position de la table est importante dans l’instruction JOIN. Si nous modifions les positions de la table, nous obtenons une sortie différente. Dans la requête suivante, nous avons la table des départements (à gauche) et la table des employés (à droite).

1
2
3
4

SELECT *
FROM Départements
RIGHT OUTER JOIN Employee ON Departments.EmpID = Employee.EmpID

Vous pouvez remarquer la différence dans la jointure externe droite après avoir permuté les positions des tables dans la requête ci-dessus.

En résumé, nous pouvons représenter la jointure externe droite SQL en utilisant le diagramme de Venn suivant. Nous obtenons une zone en surbrillance dans la sortie de SQL Right Outer Join.

L’union entre SQL Left Outer Join et SQL Right Outer Join

Dans les exemples précédents, nous avons exploré la jointure externe gauche SQL et la jointure externe droite SQL avec différents exemples. Nous pouvons faire une union du résultat de la jointure externe gauche SQL et de la jointure externe droite SQL. Il donne la sortie de la jointure externe complète SQL.

Exécutez la requête suivante comme alternative à la jointure externe complète SQL.

1
2
3
4
5
6
7

SELECT *
FROM Employé
GAUCHE OUTER JOIN Départements ON Employee.EmpID = Departments.EmpID
UNION ALL
SELECT *
FROM Employee
RIGHT OUTER JOIN Departments ON Employee.EmpID = Departments.EmpID

Dans la sortie suivante, nous obtenons tous enregistrements correspondants, annulez les enregistrements de la table de gauche et annulez les enregistrements de la table de droite. Il est similaire à une sortie de SQL Full Outer Join.

Conclusion

Dans cet article, nous avons exploré la jointure externe SQL et ses types avec des exemples. J’espère que vous avez trouvé cet article utile. N’hésitez pas à nous faire part de vos commentaires dans les commentaires ci-dessous.

  • Auteur
  • Messages récents
En tant que formateur certifié MCSA et Microsoft Certified à Gurgaon, en Inde, avec 13 ans d’expérience, Rajendra travaille pour une variété de grandes entreprises se concentrant sur l’optimisation des performances, la surveillance, la haute disponibilité et les stratégies et la mise en œuvre de reprise après sinistre. Il est l’auteur de centaines d’articles faisant autorité sur SQL Server, Azure, MySQL, Linux, Power BI, le réglage des performances, AWS / Amazon RDS, Git et les technologies associées qui ont été consultés par plus de 10 millions de lecteurs à ce jour.
Il est le créateur de l’une des plus grandes collections d’articles en ligne gratuits sur un seul sujet, avec sa série de 50 articles sur les groupes de disponibilité Always On SQL Server. Sur la base de sa contribution à la communauté SQL Server, il a été récompensé par divers prix dont le prestigieux « Meilleur auteur de l’année » en continu en 2020 et 2021 chez SQLShack.
Raj est toujours intéressé par de nouveaux défis, donc si vous avez besoin de conseil aide sur tout sujet traité dans ses écrits, il peut être contacté à [email protected]
Voir tous les articles de Rajendra Gupta

Derniers messages de Rajendra Gupta (tout afficher)
  • Délais d’expiration des sessions dans SQL Server Always On Availability Groupes – 8 février 2021
  • Mise à niveau des versions mineures et majeures pour AWS RDS SQL Server – 29 janvier 2021
  • Déploiement des instances AWS RDS PostgreSQL – 27 janvier 2021

Write a Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *