Les jointures de tables sont l’un des concepts les plus importants de SQL Server : elles te permettent de combiner les données de plusieurs tables pour créer des rapports et des analyses pertinents. Que tu construises des rapports complexes ou que tu analyses des données, comprendre le fonctionnement des jointures est indispensable pour tout développeur SQL.
Dans ce guide complet, on passe en revue chaque type de jointure de SQL Server avec des exemples pratiques, des explications claires et des cas concrets.
🔖 Référence rapide : besoin d’un aide-mémoire ? Jette un œil à notre antisèche des JOIN SQL avec tous les types de JOIN, des schémas visuels et des exemples de code au même endroit.
Comprendre les jointures SQL Server
Les jointures SQL Server sont des opérations qui combinent les lignes de deux tables ou plus à partir d’une colonne commune. Les types de jointure les plus courants sont :
- INNER JOIN : renvoie uniquement les enregistrements correspondants des deux tables
- LEFT JOIN : renvoie tous les enregistrements de la table de gauche, plus les enregistrements correspondants de la table de droite
- RIGHT JOIN : renvoie tous les enregistrements de la table de droite, plus les enregistrements correspondants de la table de gauche
- FULL OUTER JOIN : renvoie tous les enregistrements, qu’il y ait une correspondance dans l’une ou l’autre table
Préparer les données d’exemple
Pour nos exemples, on utilise deux tables simples qui représentent un scénario métier courant :
Table Orders :
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
Product NVARCHAR(50),
OrderDate DATE
);
INSERT INTO Orders VALUES
(1, 1, 'Laptop', '2024-01-15'),
(2, 2, 'Mouse', '2024-01-16'),
(3, 3, 'Keyboard', '2024-01-17');
| OrderID | CustomerID | Product | OrderDate |
|---|---|---|---|
| 1 | 1 | Laptop | 2024-01-15 |
| 2 | 2 | Mouse | 2024-01-16 |
| 3 | 3 | Keyboard | 2024-01-17 |
Table Customers :
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
Name NVARCHAR(50),
City NVARCHAR(50)
);
INSERT INTO Customers VALUES
(1, 'John Doe', 'New York'),
(2, 'Jane Smith', 'Los Angeles'),
(4, 'Alex Johnson', 'Chicago');
| CustomerID | Name | City |
|---|---|---|
| 1 | John Doe | New York |
| 2 | Jane Smith | Los Angeles |
| 4 | Alex Johnson | Chicago |
INNER JOIN
Un INNER JOIN renvoie uniquement les lignes qui ont une valeur correspondante dans les deux tables. C’est le type de jointure le plus utilisé, idéal quand tu veux voir uniquement les enregistrements présents dans les deux tables.
Quand utiliser INNER JOIN
- Quand tu as besoin de données présentes dans les deux tables
- Pour des rapports montrant des relations complètes
- Quand tu veux exclure les enregistrements incomplets
Exemple de requête SQL
SELECT
o.OrderID,
c.Name,
c.City,
o.Product,
o.OrderDate
FROM Orders o
INNER JOIN Customers c ON o.CustomerID = c.CustomerID;
Résultat
| OrderID | Name | City | Product | OrderDate |
|---|---|---|---|---|
| 1 | John Doe | New York | Laptop | 2024-01-15 |
| 2 | Jane Smith | Los Angeles | Mouse | 2024-01-16 |
Points clés :
- Seulement 2 lignes renvoyées (OrderID 3 est exclu car CustomerID 3 n’existe pas dans la table Customers)
- Seuls les clients ayant passé des commandes apparaissent dans le résultat
- La condition de jointure (
o.CustomerID = c.CustomerID) détermine quelles lignes correspondent
LEFT JOIN
Un LEFT JOIN (aussi appelé LEFT OUTER JOIN) renvoie toutes les lignes de la table de gauche, plus les lignes correspondantes de la table de droite. Quand il n’y a pas de correspondance, les colonnes de la table de droite contiennent NULL.
Quand utiliser LEFT JOIN
- Quand tu as besoin de tous les enregistrements de la table principale (table de gauche)
- Pour des rapports montrant des données manquantes ou des relations absentes
- Quand tu veux trouver les enregistrements sans correspondance
Exemple de requête SQL
SELECT
o.OrderID,
c.Name,
c.City,
o.Product,
o.OrderDate
FROM Orders o
LEFT JOIN Customers c ON o.CustomerID = c.CustomerID;
Résultat
| OrderID | Name | City | Product | OrderDate |
|---|---|---|---|---|
| 1 | John Doe | New York | Laptop | 2024-01-15 |
| 2 | Jane Smith | Los Angeles | Mouse | 2024-01-16 |
| 3 | NULL | NULL | Keyboard | 2024-01-17 |
Points clés :
- Les 3 commandes apparaissent dans le résultat (toutes les données de la table de gauche sont conservées)
- OrderID 3 affiche NULL pour les informations client car CustomerID 3 n’existe pas dans la table Customers
- Utile pour repérer les commandes sans données client valides
RIGHT JOIN
Un RIGHT JOIN (aussi appelé RIGHT OUTER JOIN) renvoie toutes les lignes de la table de droite, plus les lignes correspondantes de la table de gauche. Quand il n’y a pas de correspondance, les colonnes de la table de gauche contiennent NULL.
Quand utiliser RIGHT JOIN
- Quand tu as besoin de tous les enregistrements de la table de droite
- Moins courant que LEFT JOIN (tu peux généralement le réécrire en LEFT JOIN)
- Utile quand les données « principales » sont dans la seconde table
Exemple de requête SQL
SELECT
o.OrderID,
c.Name,
c.City,
o.Product,
o.OrderDate
FROM Orders o
RIGHT JOIN Customers c ON o.CustomerID = c.CustomerID;
Résultat
| OrderID | Name | City | Product | OrderDate |
|---|---|---|---|---|
| 1 | John Doe | New York | Laptop | 2024-01-15 |
| 2 | Jane Smith | Los Angeles | Mouse | 2024-01-16 |
| NULL | Alex Johnson | Chicago | NULL | NULL |
Points clés :
- Les 3 clients apparaissent dans le résultat (toutes les données de la table de droite sont conservées)
- Alex Johnson affiche NULL pour les informations de commande car il n’a passé aucune commande
- Utile pour repérer les clients qui n’ont rien acheté
FULL OUTER JOIN
Un FULL OUTER JOIN (ou simplement FULL JOIN) renvoie toutes les lignes, qu’il y ait une correspondance dans l’une ou l’autre table. Il combine les résultats des jointures LEFT et RIGHT, avec des valeurs NULL là où il n’y a pas de correspondance d’un côté ou de l’autre.
Quand utiliser FULL OUTER JOIN
- Quand tu as besoin de tous les enregistrements des deux tables
- Pour une analyse de données complète
- Pour identifier toutes les relations et les manques entre les tables
Exemple de requête SQL
SELECT
o.OrderID,
c.Name,
c.City,
o.Product,
o.OrderDate
FROM Orders o
FULL OUTER JOIN Customers c ON o.CustomerID = c.CustomerID;
Résultat
| OrderID | Name | City | Product | OrderDate |
|---|---|---|---|---|
| 1 | John Doe | New York | Laptop | 2024-01-15 |
| 2 | Jane Smith | Los Angeles | Mouse | 2024-01-16 |
| 3 | NULL | NULL | Keyboard | 2024-01-17 |
| NULL | Alex Johnson | Chicago | NULL | NULL |
Points clés :
- Les 4 lignes possibles apparaissent dans le résultat
- Affiche à la fois les commandes orphelines (OrderID 3) et les clients sans commande (Alex Johnson)
- Combine la vue d’ensemble des jointures LEFT et RIGHT
- La vision la plus complète de la relation entre les tables
À retenir
Comprendre les jointures SQL Server est indispensable pour interroger efficacement une base de données. Voici un récapitulatif :
| Type de jointure | Renvoie | Cas d’usage |
|---|---|---|
| INNER JOIN | Uniquement les enregistrements correspondants | Le plus courant ; quand tu as besoin de relations complètes |
| LEFT JOIN | Tout à gauche + correspondances à droite | Quand la table de gauche est principale ; trouver les données manquantes à droite |
| RIGHT JOIN | Tout à droite + correspondances à gauche | Moins courant ; quand la table de droite est principale |
| FULL OUTER JOIN | Tous les enregistrements des deux tables | Analyse complète ; trouver toutes les relations et les manques |
Bonnes pratiques
-
Utilise des alias de table (
opour Orders,cpour Customers) pour des requêtes plus lisibles - Commence par INNER JOIN si tu hésites, puis ajuste selon tes besoins
- Privilégie LEFT JOIN à RIGHT JOIN pour une meilleure lisibilité
-
Précise toujours la condition de jointure avec la clause
ON - Pense aux performances - les jointures sur des colonnes indexées sont plus rapides
Conseils pour pratiquer
Pour maîtriser les jointures SQL Server :
- Commence avec de petits jeux de données comme les exemples ci-dessus
- Dessine des diagrammes de Venn pour visualiser ce que renvoie chaque jointure
- Expérimente avec différentes structures de tables et relations
- Utilise SQL Server Management Studio ou Beekeeper Studio pour t’entraîner
- Teste les cas limites comme les valeurs NULL et les relations manquantes
Retiens bien : les jointures sont fondamentales dans les bases de données relationnelles. Une fois maîtrisées, tu pourras écrire des requêtes puissantes qui tirent des enseignements utiles de tes données.
Beekeeper Studio est une interface de base de données gratuite & open source
Le meilleur outil de requêtes & éditeur SQL que j’aie jamais utilisé. Il m’offre tout ce dont j’ai besoin pour gérer ma base de données. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio est rapide, intuitif et facile à utiliser. Beekeeper prend en charge plein de bases de données et fonctionne parfaitement sous Windows, Mac et Linux.
Ce que les utilisateurs disent de Beekeeper Studio
« Beekeeper Studio a complètement remplacé mon ancien workflow SQL. C’est rapide, intuitif, et ça rend le travail sur les bases de données à nouveau agréable. »
« J’ai essayé beaucoup d’interfaces de base de données, mais Beekeeper trouve l’équilibre parfait entre fonctionnalités et simplicité. Ça marche, tout simplement. »