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.

eleves5 lignes
id PK prenom classe_id FK→classes.id
1Alice1
2Bob2
3Camille1
4DiegoNULL
5Eva3
classes4 lignes
id PK nom
12nde A
21ère NSI
3Tle NSI
4BTS
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.

requête SQL
SELECT *
FROM eleves e
INNER JOIN classes c
  ON e.classe_id = c.id;
résultat4 lignes
e.id e.prenom e.classe_id c.id c.nom
1Alice112nde A
2Bob221ère NSI
3Camille112nde A
4DiegoNULLNULLNULL
5Eva33Tle NSI
les lignes barrées sont éliminées par cette jointure
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ées

jointure à 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.

retour au labo