Objectif
Comprendre comment relier plusieurs tables dans une base de données relationnelle
pour exploiter les relations entre les données.
Pourquoi faire une jointure ?
Les données sont souvent réparties dans plusieurs tables.
Une jointure (JOIN) permet de croiser ces données selon une relation logique.
Exemple :
Table adherent
| id | nom | prenom |
|---|---|---|
| 1 | Durand | Alice |
| 2 | Martin | Paul |
Table emprunt
| id | id_adherent | id_livre | date_emprunt |
|---|---|---|---|
| 1 | 1 | 2 | 2025-11-10 |
| 2 | 2 | 3 | 2025-11-11 |
Objectif : afficher le nom de l’adhérent avec la date d’emprunt.
INNER JOIN – Jointure interne
Affiche uniquement les lignes qui ont une correspondance dans les deux tables.
SELECT a.nom, a.prenom, e.date_emprunt
FROM adherent a
INNER JOIN emprunt e
ON a.id = e.id_adherent;
| nom | prenom | date_emprunt |
|---|---|---|
| Durand | Alice | 2025-11-10 |
| Martin | Paul | 2025-11-11 |
L’INNER JOIN ignore les adhérents sans emprunt.
LEFT JOIN – Jointure gauche
Affiche toutes les lignes de la table de gauche (adherent),
même si aucune correspondance n’existe dans la table de droite.
SELECT a.nom, a.prenom, e.date_emprunt
FROM adherent a
LEFT JOIN emprunt e
ON a.id = e.id_adherent;
| nom | prenom | date_emprunt |
|---|---|---|
| Durand | Alice | 2025-11-10 |
| Martin | Paul | 2025-11-11 |
| Lefevre | Chloé | NULL |
Les valeurs NULL indiquent qu’aucun emprunt n’a été trouvé.
RIGHT JOIN – Jointure droite
Affiche toutes les lignes de la table de droite (emprunt),
même si aucune correspondance n’existe dans la table de gauche (adherent).
SELECT a.nom, a.prenom, e.date_emprunt
FROM adherent a
RIGHT JOIN emprunt e
ON a.id = e.id_adherent;
| nom | prenom | date_emprunt |
|---|---|---|
| Durand | Alice | 2025-11-10 |
| Martin | Paul | 2025-11-11 |
| NULL | NULL | 2025-11-12 |
À retenir : le RIGHT JOIN renvoie toutes les lignes d’emprunt, même sans adhérent correspondant.
FULL OUTER JOIN
Affiche toutes les lignes des deux tables, qu’elles aient une correspondance ou non.
Non supporté directement par MySQL, mais on peut le simuler avec une union :
SELECT a.nom, a.prenom, e.date_emprunt
FROM adherent a
LEFT JOIN emprunt e ON a.id = e.id_adherent
UNION
SELECT a.nom, a.prenom, e.date_emprunt
FROM adherent a
RIGHT JOIN emprunt e ON a.id = e.id_adherent;
Résumé visuel
| Type de jointure | Lignes affichées |
|---|---|
| INNER JOIN | Seulement les correspondances |
| LEFT JOIN | Toutes les lignes de la table gauche |
| RIGHT JOIN | Toutes les lignes de la table droite |
| FULL OUTER JOIN | Toutes les lignes des deux tables |
À retenir
INNER JOIN: croisement strictLEFT JOIN: priorité à la table de gaucheRIGHT JOIN: priorité à la table de droiteFULL JOIN: tout le monde !
Exercice 1 pratique : maîtriser les jointures SQL
Nous utiliserons trois tables d’exemple :
Table adherent
| id | nom | prenom |
|---|---|---|
| 1 | Durand | Alice |
| 2 | Martin | Paul |
| 3 | Lefevre | Chloé |
Table livre
| id | titre |
|---|---|
| 1 | Le Petit Prince |
| 2 | 1984 |
| 3 | Dune |
Table emprunt
| id | id_adherent | id_livre | date_emprunt |
|---|---|---|---|
| 1 | 1 | 2 | 2025-11-10 |
| 2 | 3 | 1 | 2025-11-11 |
Questions
- Affiche le nom des adhérents et le titre des livres qu’ils ont empruntés.
- Affiche tous les livres, même ceux qui n’ont pas encore été empruntés.
- Affiche tous les adhérents, même ceux qui n’ont jamais emprunté de livre.
Ce contenu est réservé aux membres du site. Si vous êtes un utilisateur existant, veuillez vous connecter. Les nouveaux utilisateurs peuvent s'inscrire ci-dessous.