Introduction aux types de jointures dans SQL

Une clause Join dans SQL sert à combiner des lignes de deux tables ou plus. Le processus de combinaison des lignes dépend d'une colonne qui leur est associée. Les quatre différents types de jointures dans SQL sont nommés comme jointure interne, jointure gauche, jointure droite et jointure complète. Avant de pouvoir vraiment commencer à utiliser n'importe quel type de jointure, nous avons besoin d'un SGBDR ou d'un système de gestion de base de données relationnelle où nous chargerons les données. L'un des moyens très simples de comprendre les jointures est d'utiliser le diagramme de Venn. L'utilisation d'un diagramme de Venn permet d'évaluer facilement toutes les relations possibles et logiques entre différents ensembles de données. Comprenons-le un par un à l'aide du diagramme de Venn. Plus tard, nous comprendrons la différence entre ceux-ci à l'aide d'exemples pratiques. Supposons qu'il existe deux ensembles de données dans notre base de données stockées sous la forme du tableau un et du tableau deux. Il existe une certaine relation entre les deux tables qui est spécifiée sous la forme d'une clé primaire et d'un concept de clé étrangère. Si vous joignez deux tables ayant une sorte de relation, la représentation sous forme de diagramme de Venn du scénario sera quelque chose comme,

Le montant de ce chevauchement déterminera l'étendue de la similitude entre les deux tableaux, c'est-à-dire le tableau A et le tableau B.Cela signifie que le nombre d'enregistrements du tableau un, qui correspondent aux enregistrements du tableau deux, est représenté par la section de chevauchement. Il s'agit d'un sous-ensemble de données. Nous obtenons quatre types différents de jointures en fonction du sous-ensemble de données que nous sélectionnons dans les deux tables.

Syntaxe de Join:

SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition

Types de jointures dans SQL

  1. Jointure interne
  2. Joint gauche
  3. Jointure droite
  4. Jointure complète

Ci-dessous, nous expliquons les différents types de jointures en détail.

1. Jointure intérieure

Dans une jointure interne, nous sélectionnons uniquement les données qui sont communes aux deux tableaux. (c'est-à-dire la partie 3 ici) Afin de le rendre plus précis, tous les enregistrements des deux tables correspondant à la condition mentionnée avec la jointure sont sélectionnés dans cette jointure.

Syntaxe de la jointure interne:

SELECT column-names FROM table-name1 INNER JOIN table-name2 ON column-name1 = column-name2 WHERE condition

2. Joint gauche

Dans la jointure gauche, nous sélectionnons toutes les données dans le tableau de gauche et dans le tableau de droite, nous sélectionnons uniquement l'ensemble de données qui correspond à la condition mentionnée avec la jointure (ici zone 1 + 3)

Syntaxe de la jointure gauche:

SELECT column-names FROM table-name1 LEFT JOIN table-name2 ON column-name1 = column-name2 WHERE condition

3. Jointure droite

Dans la jointure droite, nous sélectionnons toutes les données de la table de droite et dans la table de gauche, nous sélectionnons uniquement l'ensemble de données correspondant à la condition mentionnée avec la jointure (ici 3 + 2)

Syntaxe de la jointure droite:

SELECT column-names FROM table-name1 RIGHT JOIN table-name2 ON column-name1 = column-name2 WHERE condition

4. Jointure complète

Dans la jointure complète, tous les enregistrements des deux tables sont fusionnés et sélectionnés quelle que soit la condition mentionnée, la jointure étant remplie ou non. (ici 1 + 2 + 3)

Syntaxe de la jointure complète:

SELECT column-names FROM table-name1 FULL JOIN table-name2 ON column-name1 = column-name2 WHERE condition

Exemples de jointures dans SQL

Considérez les deux tableaux ci-dessous:

1. Exemple d'un ORDER_DETAILS

Le tableau de commande contient le détail de la commande passée par le client tel que l'identifiant de la commande, le nombre de produits commandés, le montant de la commande, l'identifiant du client qui a passé la commande et la date à laquelle la commande a été passée. Ce type de tableau peut être utilisé par tout site Web en ligne pour stocker les détails de la commande.

Table ORDER_DETAILS:

Numéro de commande No_of_Items Montant de la commande N ° de client Date de commande
123 3 5500 P_1 20/01/2019
234 2 6500 P_12 02/10/2019
345 1 10000 P_13 27/05/2019
456 4 4000 P_14 11/07/2019
567 2 20656 P_1 15/12/2019
678 3 15000 P_11 27/10/2019

2. Exemple de CUSTOMER_DETAILS

Prenons maintenant un autre tableau dans lequel les coordonnées du client seront stockées afin de pouvoir livrer la commande à leurs adresses respectives. La table des clients contiendra donc les détails du client tels que l'identifiant client (cust_id) qui sera unique pour chaque client. Maintenant, le prénom et le nom de famille sont stockés dans le champ appelé - Cust_First_Name et Cust_Last_Name. Les autres champs stockeront les informations telles que l'identifiant de l'e-mail, le numéro de téléphone mobile du client ainsi que l'adresse, le code PIN, la ville et l'état. Ainsi, nous pouvons voir que notre table client ressemblera à quelque chose -

Table CUSTOMER_DETAILS:

Cust_Id Cust_First_Name Cust_Last_Name Code PIN Adresse Cust_Mobile Ville Etat Cust_email
P_50 Alice Peter 111111 330 rue xyz 123 Bangalore KA
P_12 James Dsouza 155511 420 abc colony 234 Hyderabad AP
P_15 Harry Potier 123456 551 mg route 444 Noida Delhi
P_40 Miley Parker 111121 Route de 11 pieds 224 Bangalore KA
P_10 Herman Buisson 123423 34 ème rue Thanco 432 Delhi Delhi
P_18 Dan marron 134523 50 ème route indépendante 145 Gurugram Haryana
P_20 James Russel 111111 101 mg route 678 Bangalore KA
P_1 Miley Madison 100011 45 ème disposition de kaverappa 987 Chennai TN

Maintenant, en utilisant cet exemple, comprenons la fonctionnalité des jointures. Nous pouvons voir que la relation entre les deux tables, c'est-à-dire la table ORDER_DETAILS et la table CUSTOMER_DETAILS, est établie par la clé qui a la valeur de l'identifiant client, c'est-à-dire Customer_Id qui est une clé primaire dans la table CUSTOMER_DETAILS et une clé étrangère dans le Table ORDER_DETAILS.

Quelques points importants à noter ici avant de continuer sont:

  • Tous les clients de notre table CUSTOMER_DETAILS n'ont pas passé de commande.
  • Toutes les demandes de commande que nous avons dans notre table ORDER_DETAILS n'ont pas un client_id qui est présent dans notre table CUSTOMER_DETAILS, ce qui signifie que pour certaines commandes, il n'y a pas de détail du client.

3. Jointure intérieure

Inner Join vous donnera uniquement les enregistrements pour lesquels la condition est remplie.

Requete:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
inner join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Production:

Cust_First_Name Cust_email No_of_Items Montant de la commande Date de commande
Miley 3 5500 20/01/2019
James 2 6500 02/10/2019
Miley 2 20656 15/12/2019

4. Jointure gauche

Left Join vous donnera tous les enregistrements de la table de gauche, c'est-à-dire la table CUSTOMER_DETAILS. S'il n'y a aucune commande passée par le client, il retournera une valeur nulle pour les colonnes de la table ORDER_DETAILS.

Requete:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
left join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Production:

Cust_First_Name Cust_email No_of_Items Montant de la commande Date de commande
Alice NUL NUL NUL
James 2 6500 02/10/2019
Harry NUL NUL NUL
Miley NUL NUL NUL
Herman NUL NUL NUL
Dan NUL NUL NUL
James NUL NUL NUL
Miley 3 5500 20/01/2019
Miley 2 20656 15/12/2019

5. Jointure droite

À droite, Join vous donnera tous les enregistrements de la table de droite, c'est-à-dire la table ORDER_DETAILS. Si aucun enregistrement client n'a été trouvé pour la commande, il retournera une valeur nulle pour les colonnes de la table CUSTOMER_DETAILS.

Requete:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
right join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Production:

Cust_First_Name Cust_email No_of_Items Montant de la commande Date de commande
Miley 3 5500 20/01/2019
James 2 6500 02/10/2019
NUL NUL 1 10000 27/05/2019
NUL NUL 4 4000 11/07/2019
Miley 2 20656 15/12/2019
NUL NUL 3 15000 27/10/2019

6. Jointure complète

La jointure complète vous donnera tous les enregistrements spécifiés dans les deux tables.

Requete:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
full join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Production:

Cust_First_Name Cust_email No_of_Items Montant de la commande Date de commande
Alice NUL NUL NUL
James 2 6500 02/10/2019
Harry NUL NUL NUL
Miley NUL NUL NUL
Herman NUL NUL NUL
Dan NUL NUL NUL
James NUL NUL NUL
Miley 3 5500 20/01/2019
Miley 2 20656 15/12/2019
NUL NUL 1 10000 27/05/2019
NUL NUL 4 4000 11/07/2019
NUL NUL 3 15000 27/10/2019

Avantages des jointures en SQL

  1. Une exécution plus rapide qui signifie une récupération plus rapide des colonnes souhaitées.
  2. Optimisé, lisible et compréhensible
  3. Augmentation des performances.

Conclusion

Comme vu, nous utilisons JOINs pour ajouter et récupérer les champs de différentes tables.

  • Inner Join récupère les enregistrements où la condition donnée est remplie.
  • La jointure gauche vous donnera toutes les lignes du tableau de gauche, même lorsque la condition donnée ne correspond pas.
  • La jointure droite vous donnera toutes les lignes du tableau de gauche, même lorsque la condition donnée ne correspond pas.
  • La jointure complète renvoie toutes les lignes en cas de correspondance dans l'une des tables.
  • Les requêtes de jointure peuvent être utilisées avec des commandes telles que - SELECT, INSERT, UPDATE, DELETE.
  • Les jointures s'entendent également avec différentes clauses comme - GROUP BY, SUB QUERIES, WHERE, AGGREGATE FUNCTIONS, etc.

Article recommandé

Cela a été un guide pour les types de jointures dans SQL. Ici, nous discutons des différents types de jointures en SQL et ses avantages ainsi que des exemples. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -

  1. Avantages de NoSQL
  2. Outils de gestion SQL
  3. Base de données en SQL
  4. Caractère générique dans SQL
  5. 6 principaux types de jointures dans MySQL avec des exemples