🔔

Venez assister au webinar de présentation de nos formations Data le 13 mars à 18h00 !

Je m'inscris à l'événement

Jointures SQL : les 10 requêtes à connaître en 2023

SQL

Les jointures permettent d’extraire des informations issues de tables mises en relation. Cette instruction est une des plus importantes en SQL.

Jointures SQL : les 10 requêtes à connaître en 2023

Si tu commences à manipuler des bases de données relationnelles, tu dois apprendre à maîtriser l’art des jointures SQL. Joindre deux tables revient à créer une nouvelle table temporaire qui fusionne les données de deux datasets. Il existe de nombreuses manières de fusionner les enregistrements présents sur deux tables. Trouver la bonne manière et la réaliser sans se tromper est parfois difficile ! Mais pas de panique, cet article te présente les jointures SQL à connaître.

Table des matières

Qu’est-ce qu’une jointure SQL?

Les jointures SQL sont très utilisées par un Data analyst, que ce soit sur des plateformes propriétaires comme Oracle, IBM ou encore MySQL.

Le SQL est langage qui permet de manipuler des bases de données (database) mettant en relation une série de tables. Chaque table prend la forme d’un tableau, composé de lignes et de colonnes dans lesquelles sont classées les données (comme un tableau Excel).

Ces tables sont ensuite mises en relation à l’aide d’une clé primaire  et d’une clé étrangère. Pour associer les données des différentes tables mises en relation, on doit utiliser une jointure.

Prenons un exemple que nous allons utiliser tout au long de cet article. Nous allons effectuer des jointures sur une base de données composées de deux tables :

  • Une table Cinema, composée d’une liste de films avec différentes informations concernant celle-ci. L’ID_film correspond à la clé primaire de la table, c’est à dire un identifiant qui permet d’identifier un film de manière unique (un peu comme un numéro de série).
  • Une table Acteurs qui liste des acteurs. L’ID film est la clé étrangère, elle permet de savoir dans quel film l’acteur a joué. Par exemple : Mark Hamill a joué dans le film dont l’ID_film est 2 et si on regarde dans la table Cinema, l’ID 2 correspond au film Star Wars.
Tables à joindre avec SQL

Si tu souhaites associer les données de ces deux tables afin d’effectuer une analyse, alors tu dois faire une jointure SQL

Quand utiliser les jointures SQL?

Une jointure est une requête qui sert à fusionner toute ou partie de deux tables d’une base de données relationnelles afin d’obtenir un nouveau dataset facile à exploiter.
Par exemple, si tu veux associer les acteurs et leur film, tu dois faire une jointure SQL. Dans ce cas, il s’agit d’identifier uniquement les correspondances entre un acteur et un film. On va donc réaliser une jointure de type INNER JOIN pour associer les données de deux tables que lorsque l’ID_film est identique.

INNER JOIN exemple

Cette nouvelle table est donc née de la jointure des deux tables précédentes. Elle permet d’identifier facilement que deux acteurs ont joué dans le même film. En effet, "Don’t look up" est répété deux fois car son ID se trouve dans deux lignes différentes de la table Acteurs.

Ainsi, une jointure SQL facilite l’analyse en fusionnant les données de plusieurs tables. Il existe différents types de jointures SQL adaptées à la question qu’on se pose. Savoir les utiliser est essentiel si tu souhaites te spécialiser dans l’analyse de données.
Avec Databird, tu peux acquérir les compétences d’un Data analyst en quelques semaines. Nos formations sont adaptées à tous les emplois du temps !



Les différents types de jointures SQL

Il existe plusieurs instructions de jointures différentes. Chaque jointure a des caractéristiques particulières qu’il faut connaître avant de s’en servir. Bien choisir sa jointure peut te faire gagner du temps et t’éviter des problèmes !

INNER JOIN

INNER JOIN : définition

Le INNER JOIN est une jointure qui permet d’associer les données de deux tables seulement s’il existe une correspondance. Ainsi, la nouvelle table associe les enregistrements (=lignes) que si la clé est identique. En mathématiques on appelle ça une intersection.

Jointure SQL INNER JOIN

Dans cet article :

  • La table A correspond à la table Cinéma. Dans la jointure, elle est positionnée à gauche,
  • La table B correspond à la table Acteurs. Dans la jointure, elle est positionnée à droite.

INNER JOIN : requête SQL

Nous allons maintenant voir comment construire la requête SQL INNER JOIN. 

La requête se décompose en 3 parties :

  1. SELECT et FROM permettent de choisir quelles informations sont extraites depuis la table de référence, 
  2. INNER JOIN est le type de jointure utilisée,
  3. ON définit la clé de jointure (ID_film).
SELECT colonnes 1, colonnes 2, …
FROM table1
INNER JOIN table2
ON clé de jointure

INNER JOIN : exemple d’utilisation

Voici la requête SQL qui a permis d’obtenir le tableau présenté précédemment :

SELECT ID_film, Nom_du_film, Annee_de_sortie, Note_IMDB
FROM Cinema
INNER JOIN Acteurs
ON Cinema.ID_film = Acteurs.ID_film
INNER JOIN exemple

Tu remarques qu’il manque l’ID_film 4 de la table Cinema, correspondant au film Titanic. En effet, il n’existe pas de correspondance entre à l’ID_film 4 dans la table Acteurs. La nouvelle table ne contient pas l’acteur Tom Hanks car il n’est associé à aucun film.

C’est logique : INNER JOIN ne garde que les lignes qui font l’objet d’une intersection.

LEFT JOIN

LEFT JOIN : définition

Cette instruction réalise une jointure entre deux tables en gardant toutes les informations de la table de gauche. Les données de la table de droite sont associées à la table de gauche seulement si leur clé correspond.

Remarque : Quand on dit “à gauche” et “à droite”, on fait référence à l’ordre d’apparition des tables après la clause ON : table_gauche.attribut = table_droite.attribut

LEFT JOIN appartient à la famille des jointures OUTER JOIN. Si un enregistrement ne se situe pas dans la table de droite mais qu’il existe la table de gauche, alors on trouve la valeur NULL dans le dataset final. 


Contrairement à un INNER JOIN, un LEFT JOIN préserve les données de la table de gauche, même en l’absence de correspondance.

Jointure SQL LEFT JOIN

LEFT JOIN : requête SQL

La requête LEFT JOIN se construit ainsi :

  1. SELECT et FROM permettent de choisir quelles informations sont extraites depuis la table de référence. 
  2. LEFT JOIN est le type de jointure SQL
  3. ON définit la clé de jointure (ID_film)
SELECT colonnes 1, colonnes 2, …
FROM table1
LEFT JOIN table2
ON clé de jointure


LEFT JOIN : Exemple d’utilisation

Nous allons garder les mêmes tables qu’au début de l’article. Nous allons appliquer la requête SQL LEFT JOIN sur ces deux tables.

SELECT *
FROM cinema
LEFT JOIN acteurs
ON cinema.id_film = acteurs.id_film


Remarque : l’étoile derrière la clause SELECT signifie “tout sélectionner”.

LEFT JOIN exemple

Ici, tous les enregistrements de la table Cinema sont présents. Cependant, comme aucun acteur est associé à l’ID_film 4 (Titanic), on trouve des valeurs NULL.

Tu remarques également que Tom Hanks ne figure pas dans cette nouvelle table. C’est normal car la table de référence est la table de gauche, c’est à dire la table Cinema.

LEFT JOIN sans intersection


Cette jointure est un LEFT JOIN auquel on retire les enregistrements qui correspondent à la table de droite. Ainsi, on ne garde que les données de la table de gauche qui n’ont aucune correspondance avec la table de droite.

Jointure SQL LEFT JOIN sans intersection
SELECT colonnes 1, colonnes 2, …
FROM table1
LEFT JOIN table2
ON condition
WHERE table2.id IS NULL

RIGHT JOIN

RIGHT JOIN: définition

Cette requête SQL réalise une jointure en gardant toutes les informations de la table de droite. S’il n’y a pas de correspondance avec la table de gauche, la cellule de l’information manquante contient la valeur NULL. Il s’agit d’un OUTER JOIN aussi.

Jointure SQL RIGHT JOIN

RIGHT JOIN: Requête SQL

La requête SQL RIGHT JOIN se décompose de la manière suivante :

  1. SELECT et FROM permettent de choisir quelles informations sont extraites depuis la table de référence. 
  2. RIGHT JOIN est le type de jointure SQL
  3. ON définit la clé de jointure (ID_film)
SELECT colonnes 1, colonnes 2, …
FROM table1
RIGHT JOIN table2
ON condition


RIGHT JOIN : Exemple d’utilisation

Faisons un RIGHT JOIN des tables Cinema et Acteurs :

SELECT *
FROM Cinema
RIGHT JOIN Acteurs
ON Cinema.ID_film = Acteurs.ID_film
RIGHT JOIN exemple


Ici, comme la table Cinéma ne contient aucun film de Tom Hanks, la ligne contient des valeurs NULL.

RIGHT JOIN sans intersection


Cette jointure est juste le RIGHT JOIN auquel on retire les enregistrements de la table de Gauche. Ainsi, on ne garde que les lignes de la table de droite qui n’ont aucune correspondance avec la table de gauche.

Jointure SQL RIGHT JOIN sans intersection
SELECT colonnes 1, colonnes 2, …
FROM table1
RIGHT JOIN table2
ON condition
WHERE table1.id IS NULL

FULL JOIN

FULL JOIN : définition

Le FULL JOIN va réaliser une jointure totale entre deux tables. On va prendre les enregistrements de toutes les tables et les mettre dans la table de résultat. Les cellules qui n’auront pas de correspondance dans les deux tables en auront pour valeur : NULL.

Cette jointure n'exclut aucune donnée, ni à droite ni à gauche. Elle appartient également à la famille des OUTER JOIN.

Jointure SQL FULL JOIN

FULL JOIN: requête SQL

La requête se construit de la manière suivante :

  1. SELECT et FROM permettent de choisir quelles informations sont extraites depuis la table de référence. 
  2. FULL JOIN est le type de jointure SQL
  3. ON définit la clé de jointure
SELECT colonnes 1, colonnes 2, …
FROM table1
FULL JOIN table2
ON condition


FULL JOIN : exemple d’utilisation

Pour réaliser une jointure FULL JOIN de nos deux tables, la requêt SQL sera :

SELECT *
FROM Cinema
FULL JOIN Acteurs
ON Cinema.id_film = Acteurs.id_film

Voici le résultat :

FULL JOIN exemple

Ici, la table contient tous les enregistrements des deux tables, qu’il y ait une correspondance ou non.

Bravo ! Tu connais les principales jointures SQL ! Pour apprendre à les maîtriser, télécharge le programme de nos formations et inscris toi à notre prochaine session !

NATURAL JOIN

NATURAL JOIN: définition

NATURAL JOIN permet de joindre deux tables à condition qu’il existe deux colonnes qui portent le même nom et qui contiennent des données du même type.

La jointure NATURAL JOIN a la particularité de ne pas utiliser la clause ON dans sa requête SQL. Cette jointure cherche automatiquement une clé entre les colonnes des deux tables. Si elle la trouve, elle associe les données sur la base de cette clé, sinon un NULL apparaît. 

NATURAL JOIN : requête SQL

La requête se construit de la manière suivante :

  1. SELECT et FROM permettent de choisir quelles informations sont extraites depuis la table de référence.
  2. NATURAL JOIN est le type de jointure SQL
SELECT colonnes 1, colonnes 2, …
FROM table1
NATURAL JOIN table2


NATURAL JOIN : exemple d’utilisation

Appliquons maintenant cette jointure à notre exemple :

SELECT *
FROM cinema
NATURAL JOIN acteurs

On obtient le résultat suivant :

NATURAL JOIN exemple

Ici, on trouve le même résultat que la jointure INNER JOIN. Pourtant, la jointure NATURAL JOIN n’a pas eu besoin de clause ON. Elle a déduit que la colonne ID_film était la clé de jointure car le nom et le type de donnée de cette colonne sont les mêmes dans les deux tables.




CROSS JOIN

CROSS JOIN : définition

CROSS JOIN est une jointure assez particulière. Elle réalise un produit cartésien entre les données de deux tables. 

Késako ? C’est facile : si la table A possède 10 lignes et que la table B possède 10 lignes alors la table issue de la jointure aura 100 lignes.


Ainsi, chaque ligne de la table A est associée à toutes les lignes de la table B.

Jointure SQL CROSS JOIN

Ici, on n’utilise pas de clé de jointure. Toutes les lignes sont associées avec celles de l’autre table.

CROSS JOIN : requête SQL

Voici de quoi se compose la commande SQL :

  1. SELECT et FROM permettent de choisir quelles informations sont extraites depuis la table de référence. 
  2. CROSS JOIN est le type de jointure SQL
SELECT colonnes 1, colonnes 2, …
FROM table1
CROSS JOIN table2


CROSS JOIN : exemple d’utilisation

Appliquons maintenant cette jointure avec notre exemple de cinéma :

SELECT *
FROM acteurs
CROSS JOIN cinema

On obtient le résultat suivant :

CROSS JOIN exemple

Tu peux remarquer que chaque ligne de la table Cinema a été associée à chaque ligne de la table Acteurs. C’est parce que la table de gauche (Cinema) correspond à la table A sur le schéma ci-dessus.

Remarque : l’intégralité de la table n’est pas présente, elle contient 30 lignes. C’est logique car 5*6 = 30.

UNION JOIN

UNION JOIN : définition


Le UNION JOIN réalise le même travail que la jointure FULLJOIN mais il s’utilise avec des tables qui ont les mêmes colonnes. Pour mieux comprendre nous allons introduire une nouvelle table « acteurs FR » qui réunit des acteurs français.

Tables "Acteurs"

La jointure SQL UNION permet de créer une table unique qui réunit toutes les données des deux tables mais à la différence d’un FULL JOIN, la table finale n’a pas de doublons.

UNION JOIN : requête SQL

  1. SELECT et FROM permettent de choisir quelles informations sont extraites depuis la table de référence 
  2. UNION définit le type de jointure SQL
  3. SELECT et FROM permettent de choisir quelles informations sont extraites depuis la deuxième table.
SELECT colonnes 1, colonnes 2, …
FROM table1
UNION
SELECT colonnes 1, colonnes 2, …
FROM table2


UNION JOIN : exemple d’utilisation

Appliquons maintenant cette jointure avec notre exemple de cinéma :

SELECT *
FROM Acteurs_USA
UNION
SELECT *
FROM Acteurs_FR

On obtient le résultat suivant :

UNION JOIN exemple

La table qui résulte de cette jointure contient tous les enregistrements des deux tables. L’opération est la même que pour le FULL JOIN mais le résultat ne contient pas de NULL ni de doublons. Pour les tables où les colonnes portent les mêmes noms, on préférera l’UNION.

SELF JOIN

SELF JOIN : définition

Le SELF JOIN est une jointure qui est faite sur elle-même. Cela revient à réaliser une jointure sur deux tables identiques.

Jointure SQL SELF JOIN

Ces jointures sont utilisées lorsqu’une table possède une clé primaire et une clé étrangère à la fois. Nous allons prendre une nouvelle table pour expliquer cette jointure.


Voici la table « Employees » :

Table "Employees"

Cette table donne la liste des employés. Sa clé primaire correspond à l’ID_employee.

La colonne ID_manager indique qui est le manager de l’employé en question. 

Concrètement, Antoine est le manager de Yves et Yves est le manager de Marc.


Autrement dit, ID_employee est la clé primaire et ID_manager est la clé étrangère. La jointure SELF JOIN va permettre de mettre en évidence le manager de chaque employé.

SELF JOIN :requête SQL

Ici, la requête est plus compliquée car il faut dupliquer la table avant de pouvoir réaliser la jointure SELF JOIN :

  1. SELECT sélectionne et renomme les colonnes de la table,
  2. FROM définit la table de référence et la renomme afin de bien dissocier les deux tables.
  3. JOIN applique la jointure sur la table dupliquée, qui est renommée également,
  4. ON définit la clé de jointure
SELECT table1.clé_primaire,
       table1.colonne1,
       table1.clé_étrangère,
       table2.colonne1 as Table2colonne1,
 
FROM Table table1
JOIN Table table2
ON table1.clé_étrangère = table2.clé_primaire


SELF JOIN : exemple d’utilisation

Voici la requête appliquée à notre exemple :

SELECT Employees.ID_employee,
Employees.Nom,
Managers.Nom,

FROM Employees

LEFT JOIN Employees as Managers
ON Employees.ID_manager = Managers.ID_manager

 Remarque : « as » sert à renommer la table et les colonnes pour ne pas se perdre dans la nouvelle table.

Ici, nous avons réalisé une jointure SELF JOIN par le biais d’une jointure LEFT JOIN. Il est tout à fait possible de réaliser la même opération avec d’autres types de jointures.

 

Le résultat de la requête SQL est le suivant :

SELF JOIN exemple


Voilà ! Tu connais maintenant les jointures SQL incontournables ! Si toi aussi tu veux devenir un maître de la Data analyse alors fonce t’inscrire à notre formation et rejoins la grande famille des Databirdies !

équipe DataBird formation data analyse
Tu souhaites devenir data analyst

Notre formation intensive en présentiel ou à distance en data analyse est ouverte à tous types de profils. Tu es intéressé(e) pour rejoindre notre communauté ? Postule pour en savoir plus.

A lire également :
Venez assister au Webinar sur nos formations tous les mercredis à 18h
S'inscrire