Introduction aux jointures
Bonne lecture et bon apprentissage !
Junior TSAFACK – 08/08/2026
⏱️ Temps de lecture estimé : 5 minutes
Les jointures en SQL permettent d’associer plusieurs tables dans une même requête. Cela permet d’exploiter la puissance des bases de données relationnelles pour obtenir des résultats qui combinent les données de plusieurs tables de manière efficace.
Pourquoi utiliser des jointures ?
Section titled “Pourquoi utiliser des jointures ?”Dans une base de données relationnelle, les données sont organisées en tables distinctes pour éviter la redondance et garantir la cohérence. Par exemple :
- Une table
utilisateurcontient les informations sur les utilisateurs. - Une table
commandecontient les commandes passées.
Pour obtenir la liste des commandes avec le nom de l’utilisateur qui les a passées, il faut lier ces deux tables. C’est exactement ce que permettent les jointures.
Principe général
Section titled “Principe général”Une jointure consiste à associer les lignes de deux tables en comparant les valeurs d’une colonne de la première table avec les valeurs d’une colonne de la seconde table.
Table A Table B+----+----------+ +----+----------+--------+| id | nom | | id | id_user | produit|+----+----------+ +----+----------+--------+| 1 | Pierre | | 1 | 1 | Clavier|| 2 | Marie | | 2 | 1 | Souris || 3 | Jean | | 3 | 2 | Ecran |+----+----------+ +----+----------+--------+
Jointure (INNER JOIN) sur A.id = B.id_user :+----------+----------+---------+| nom | produit | id_user |+----------+----------+---------+| Pierre | Clavier | 1 || Pierre | Souris | 1 || Marie | Ecran | 2 |+----------+----------+---------+Remarque : Les jointures s’utilisent généralement avec une condition d’égalité (
=) entre une colonne de la première table et une colonne de la seconde table (comme une clé primaire et une clé étrangère). Mais elles peuvent aussi utiliser d’autres opérateurs (>,<,<>, etc.) pour des cas particuliers (jointures d’inégalité).
Exemple de base
Section titled “Exemple de base”Imaginons une base de données qui possède :
- Une table
utilisateuravec les informations des utilisateurs. - Une table
adressequi contient les adresses de ces utilisateurs.
Table « utilisateur » :
| id | prenom | nom | ville | |
|---|---|---|---|---|
| 1 | Aimée | Marechal | [email protected] | Paris |
| 2 | Esmée | Lefort | [email protected] | Lyon |
| 3 | Marine | Prevost | [email protected] | Lille |
| 4 | Luc | Rolland | [email protected] | Marseille |
Table « commande » :
| utilisateur_id | date_achat | num_facture | prix_total |
|---|---|---|---|
| 1 | 2013-01-23 | A00103 | 203.14 |
| 1 | 2013-02-14 | A00104 | 124.00 |
| 2 | 2013-02-17 | A00105 | 149.45 |
| 2 | 2013-02-21 | A00106 | 235.35 |
| 5 | 2013-03-02 | A00107 | 47.58 |
Avec une jointure, il est possible d’obtenir les données de l’utilisateur et de ses commandes en une seule requête.
Types de jointures
Section titled “Types de jointures”Il existe plusieurs méthodes pour associer 2 tables. Voici les principales techniques utilisées :
| Type de jointure | Description |
|---|---|
| INNER JOIN | Jointure interne : retourne les enregistrements quand la condition est vraie dans les 2 tables. C’est l’une des jointures les plus communes. |
| CROSS JOIN | Jointure croisée : produit cartésien de 2 tables. Associe chaque ligne d’une table avec chaque ligne d’une autre table. |
| LEFT JOIN | Jointure externe gauche : retourne tous les enregistrements de la table de gauche, même si la condition n’est pas vérifiée dans l’autre table. |
| RIGHT JOIN | Jointure externe droite : retourne tous les enregistrements de la table de droite, même si la condition n’est pas vérifiée dans l’autre table. |
| FULL JOIN | Jointure externe complète : retourne les résultats quand la condition est vraie dans au moins une des 2 tables. |
| SELF JOIN | Auto-jointure : jointure d’une table avec elle-même comme si c’était une autre table. |
| NATURAL JOIN | Jointure naturelle : basée sur les colonnes qui portent le même nom dans les deux tables. |
Représentation visuelle des jointures
Section titled “Représentation visuelle des jointures”Chaque type de jointure peut être représenté par un diagramme de Venn :
INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ ███ │ │█████│ │█████│ │█████│ │ ███ │ │█████│ │█████│ │█████│ └─────┘ └──┬──┘ └──┬──┘ └──┬──┘ │ │ │ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ │ │ │ │ │ │ └─────────┘ └─────────┘ └─────────┘- INNER JOIN : uniquement l’intersection (éléments communs).
- LEFT JOIN : tous les éléments de A + l’intersection avec B.
- RIGHT JOIN : tous les éléments de B + l’intersection avec A.
- FULL JOIN : tous les éléments de A ET B.
Cas particuliers
Section titled “Cas particuliers”Jointures d’inégalité
Section titled “Jointures d’inégalité”Il est possible d’utiliser des opérateurs autres que = dans une jointure, par exemple pour trouver des enregistrements où une valeur est supérieure à une autre :
SELECT *FROM produit p1INNER JOIN produit p2 ON p1.prix > p2.prix;Jointures sur plusieurs colonnes
Section titled “Jointures sur plusieurs colonnes”On peut joindre sur plusieurs colonnes avec AND :
SELECT *FROM commande cINNER JOIN livraison l ON c.id = l.commande_id AND c.date_commande = l.date_livraison;Jointures avec des conditions complexes
Section titled “Jointures avec des conditions complexes”Les jointures peuvent inclure des fonctions ou des expressions :
SELECT *FROM commande cINNER JOIN client cl ON UPPER(c.nom_client) = UPPER(cl.nom);Quel type de jointure choisir ?
Section titled “Quel type de jointure choisir ?”Le choix du type de jointure dépend de ce que vous souhaitez obtenir :
| Si vous voulez… | Utilisez… |
|---|---|
| Uniquement les enregistrements qui existent dans les deux tables | INNER JOIN |
| Tous les enregistrements de la table de gauche | LEFT JOIN |
| Tous les enregistrements de la table de droite | RIGHT JOIN |
| Tous les enregistrements, quelle que soit la correspondance | FULL JOIN |
| Associer chaque enregistrement à tous les autres | CROSS JOIN |
Bonnes pratiques
Section titled “Bonnes pratiques”- Utilisez des alias pour simplifier l’écriture des requêtes :
SELECT u.id, u.nom, c.date_achatFROM utilisateur AS uINNER JOIN commande AS c ON u.id = c.utilisateur_id;-
Spécifiez explicitement les colonnes à sélectionner plutôt que d’utiliser
*. -
Indexez les colonnes utilisées dans les jointures (
JOIN ... ON) pour améliorer les performances. -
Testez vos jointures avec un jeu de données limité avant de les exécuter sur de grandes tables.
Prochain chapitre
Section titled “Prochain chapitre”Vous avez maintenant une vision d’ensemble des jointures. Passons au type de jointure le plus utilisé : le INNER JOIN.
👉 Chapitre 32 : INNER JOIN – Jointure interne
Bonne continuation !
Junior TSAFACK – 08/08/2026