Bases de données relationnelles et SQL
Cours · informatique (MP2I/MPI), chapitre 21 · MP2I et MPI · le début du chapitre, la suite sur Adloun
21.1 Dire ce qu'on veut, pas comment l'obtenir
Ce chapitre est le seul du livre où l'on ne programme pas. On interroge. Et c'est la troisième famille de langages du chapitre chap:algo-prog : le déclaratif, où l'on décrit le résultat voulu sans dire par quels parcours l'atteindre.
Le programme borne l'ambition avec netteté : « on se limite volontairement à une description applicative des bases de données en langage SQL. Il s'agit de permettre d'interroger une base présentant des données à travers plusieurs relations. On ne présente ni l'algèbre relationnelle ni le calcul relationnel. »
La liste est longue et le B.O. la donne : « la création, la suppression et la modification de tables au travers du langage SQL sont hors programme » ; et aussi « la notion de modèle logique vs physique, les bases de données non relationnelles, les méthodes de modélisation de base, les fragments DDL, TCL et ACL du langage SQL, l'optimisation de requêtes par l'algèbre relationnelle ». La notion d'index est hors programme, ainsi que tout ce qui touche aux dates et aux collations.
On écrit donc uniquement des SELECT. C'est peu, et c'est déjà un langage complet pour interroger.
21.2 Le vocabulaire
Une table — ou relation — est un ensemble de lignes de même forme.
- ses colonnes sont les attributs, chacun ayant un domaine : entier, flottant, chaîne ;
- ses lignes sont les enregistrements ;
- le schéma est la liste des attributs avec leurs domaines.
Le programme s'en tient à « une notion sommaire de domaine » et écarte toute considération sur les types des moteurs.
| id | nom | promo |
|---|---|---|
| 1 | Alaoui | 2026 |
| 2 | Benali | 2026 |
| 3 | Cohen | 2027 |
| 4 | Dupont | 2027 |
| code | intitule | coef |
|---|---|---|
| 10 | Informatique | 4 |
| 11 | Mathématiques | 9 |
| 12 | Physique | 6 |
| eleve | matiere | valeur |
|---|---|---|
| 1 | 10 | 17 |
| 1 | 11 | 12 |
| 2 | 10 | 8 |
| 2 | 12 | 14 |
| 3 | 11 | 15 |
Les attributs en gras forment la clé primaire. L'élève 4 n'a aucune note — ce détail servira.
La clé primaire est un ensemble d'attributs identifiant chaque ligne de façon unique. Le programme précise : « une clé primaire n'est pas forcément associée à un unique attribut même si c'est le cas le plus fréquent ». Dans Note, elle est le couple (eleve, matiere) : un élève n'a qu'une note par matière, mais plusieurs notes en tout.
Exercices du chapitre
- Sur quoi porte DISTINCT ? corrigé
- NULL ne se compare pas, et emporte les lignes avec lui corrigé
- JOIN ou LEFT JOIN : la moyenne de chaque élève corrigé
- WHERE et HAVING dans la même requête corrigé
- Les élèves sans note, et le piège de NOT IN corrigé
- La meilleure note de chaque matière, et la colonne « nue » corrigé