module · SQL · jointures · 12 min
Deux tables, une clé étrangère, cinq façons de les coller.
La table eleves référence la table classes via la clé étrangère classe_id. Chaque type de jointure raconte une histoire différente.
| id PK | prenom | classe_id FK→classes.id |
|---|---|---|
| 1 | Alice | 1 |
| 2 | Bob | 2 |
| 3 | Camille | 1 |
| 4 | Diego | NULL |
| 5 | Eva | 3 |
| id PK | nom |
|---|---|
| 1 | 2nde A |
| 2 | 1ère NSI |
| 3 | Tle NSI |
| 4 | BTS |
bac à sable · explore les 5 jointures
idée
ne garde que les lignes qui ont une correspondance des deux côtés. Diego (sans classe) et BTS (sans élève) disparaissent.
SELECT *
FROM eleves e
INNER JOIN classes c
ON e.classe_id = c.id;| e.id | e.prenom | e.classe_id | c.id | c.nom |
|---|---|---|---|---|
| 1 | Alice | 1 | 1 | 2nde A |
| 2 | Bob | 2 | 2 | 1ère NSI |
| 3 | Camille | 1 | 1 | 2nde A |
| 4 | Diego | NULL | NULL | NULL |
| 5 | Eva | 3 | 3 | Tle NSI |
défi · prédire la jointure
palier 1 / 4
INNER JOIN. Cocher les lignes du produit qui survivent à la jointure, puis vérifier.
lignes conservéesjointure à prédire : INNER JOIN
cochez les lignes conservées0 cochée
vocabulaire du modèle relationnel
clé primaire (PK)
Identifie une ligne de façon unique. eleves.id et classes.id ici.
clé étrangère (FK)
eleves.classe_id pointe vers classes.id. Garantit qu'on ne référence pas une classe inexistante.
contrainte d'intégrité
Le SGBD refusera d'insérer un élève avec classe_id = 99 si la classe 99 n'existe pas dans classes.