Informatique · Terminale · 5 min de lecture
Interroger une base de données avec SQL
Identifier les composants d'une requête ; construire des requêtes d'interrogation avec SELECT (colonnes, DISTINCT, fonctions d'agrégation COUNT, SUM, AVG, MIN, MAX), FROM, WHERE (conditions combinées par AND, OR, NOT), ORDER BY (ASC, DESC) et JOIN … ON pour relier deux tables par une clé étrangère.
Chapitre du programme : Numérique et sciences informatiques (spécialité)
Bloc 1 sur 7 · Comprendre
Comprendre : SELECT, FROM, WHERE
Une base de données relationnelle range ses données en tables. Toute la leçon utilise ces deux tables :
Table eleves (clé primaire : prenom ; classe est une clé étrangère vers classes)
| prenom | classe | note | age |
|---|---|---|---|
| Alice | A | 14 | 16 |
| Bilal | B | 9 | 17 |
| Chloé | A | 17 | 16 |
| David | C | 12 | 18 |
| Emma | B | 15 | 16 |
| Farah | C | 8 | 17 |
Table classes (clé primaire : nom)
| nom | salle |
|---|---|
| A | B12 |
| B | C04 |
| C | B07 |
Une requête d'interrogation se lit en trois clauses :
SELECT prenom, note
FROM eleves
WHERE note >= 12;FROM eleves: la table interrogée ;WHERE note >= 12: la condition que doit vérifier chaque ligne gardée ;SELECT prenom, note: les colonnes affichées pour les lignes gardées.
Résultat :
| prenom | note |
|---|---|
| Alice | 14 |
| Chloé | 17 |
| David | 12 |
| Emma | 15 |
Bloc 2 sur 7 · Approfondir
Approfondir : conditions, tri, agrégats, jointure
Conditions combinées. AND exige les deux conditions, OR une seule, NOT inverse. Comme en Python, AND est prioritaire sur OR :
SELECT prenom FROM eleves WHERE classe = 'A' OR note < 10 AND age = 17;se lit classe = 'A' OR (note < 10 AND age = 17) et renvoie Alice, Bilal, Chloé, Farah. Avec des parenthèses, le sens change :
SELECT prenom FROM eleves WHERE (classe = 'A' OR note < 10) AND age = 17;renvoie seulement Bilal et Farah.
Trier et dédoublonner. ORDER BY note DESC trie par note décroissante (ASC, croissant, est l'ordre par défaut) ; SELECT DISTINCT age ne garde qu'un exemplaire de chaque valeur :
SELECT prenom, note FROM eleves WHERE age = 16 ORDER BY note DESC;renvoie Chloé (17), Emma (15), Alice (14) ; et SELECT DISTINCT age FROM eleves ORDER BY age; renvoie 16, 17, 18.
Fonctions d'agrégation. COUNT, SUM, AVG, MIN, MAX s'appliquent aux lignes gardées par WHERE et renvoient une seule ligne :
SELECT COUNT(prenom), AVG(note), MAX(note) FROM eleves WHERE classe = 'B';renvoie 2, 12.0 et 15 : deux élèves en classe B, notes 9 et 15.
Jointure. Pour associer chaque élève à la salle de sa classe, on relie les deux tables par la clé étrangère :
SELECT eleves.prenom, classes.salle
FROM eleves JOIN classes ON eleves.classe = classes.nom
WHERE note > 13;| prenom | salle |
|---|---|
| Alice | B12 |
| Chloé | B12 |
| Emma | C04 |
Bloc 3 sur 7 · Exemple
Exemple guidé : prévoir le résultat d'une requête
Énoncé. Combien de lignes renvoie cette requête, et lesquelles ?
SELECT prenom FROM eleves WHERE NOT classe = 'C' AND age >= 17;Méthode : tester la condition ligne par ligne. NOT s'applique à classe = 'C' seulement, puis AND combine.
| prenom | NOT classe = 'C' | age >= 17 | gardée ? |
|---|---|---|---|
| Alice | vrai | faux | non |
| Bilal | vrai | vrai | oui |
| Chloé | vrai | faux | non |
| David | faux | vrai | non |
| Emma | vrai | faux | non |
| Farah | faux | vrai | non |
La requête renvoie une seule ligne : Bilal.
Bloc 4 sur 7 · Visualiser
Voir : l'ordre d'évaluation d'une requête
On écrit SELECT en premier, mais le système procède dans cet ordre :
| Étape | Clause | Effet |
|---|---|---|
| 1 | FROM … JOIN … ON | rassemble les lignes des tables, reliées par la condition de jointure |
| 2 | WHERE | ne garde que les lignes qui vérifient la condition |
| 3 | SELECT | calcule les colonnes demandées, ou les agrégats sur les lignes gardées |
| 4 | DISTINCT | supprime les doublons |
| 5 | ORDER BY | trie le résultat |
Continuez sur votre lancée
Vous avez découvert l’essentiel et un exemple. Retrouvez la suite du cours et les points à retenir, puis passez à l’entraînement guidé dans votre compte.
- Les formules et les repères à retenir
- Les erreurs fréquentes expliquées
- Un exercice avec des aides et sa correction
L’accès gratuit comprend les cours et exercices de votre niveau choisi.
Sources
- BO spécial n°8 du 25 juillet 2019 — programme de spécialité numérique et sciences informatiques de terminale, rubrique « Bases de données »
- ISO/IEC 9075, Information technology — Database languages — SQL
- Documentation de SQLite — SQL As Understood By SQLite, « SELECT » (https://www.sqlite.org/lang_select.html)
Vous pensez avoir trouvé une erreur dans cette leçon ? Signalez-la par e-mail.