Partie 1 — Afficher des données
SELECT est le mot-clé de base de toute requête : il permet d’afficher des données depuis une table.
1.1 — SELECT * : tout afficher
L’étoile * signifie « toutes les colonnes ». FROM indique la table dans laquelle chercher.
SELECT *
FROM etudiant;
1.2 — Choisir ses colonnes (projection)
On demande uniquement les colonnes utiles, séparées par des virgules, dans l’ordre de son choix.
SELECT nom, prenom
FROM etudiant;
Q1. Écris la requête qui affiche uniquement le numéro de classe (id_classe) et la moyenne de chaque élève.
1.3 — Renommer à l’affichage : AS
Le mot-clé AS renomme une colonne dans le résultat affiché, sans jamais modifier la table elle-même.
SELECT nom AS "Nom de famille",
prenom AS "Prénom"
FROM etudiant;
1.4 — Éliminer les doublons : DISTINCT
DISTINCT supprime les lignes strictement identiques dans le résultat affiché.
SELECT DISTINCT id_classe
FROM etudiant;
Q2. Sans DISTINCT, combien de lignes la requête SELECT id_classe FROM etudiant renvoie-t-elle sur notre table (5 élèves) ? Et avec DISTINCT ?
1.5 — Bilan de la partie 1
| Instruction | Effet |
|---|---|
SELECT * FROM table; | Affiche toutes les colonnes de toutes les lignes |
SELECT col1, col2 FROM table; | Affiche uniquement les colonnes choisies (projection) |
SELECT col AS "Nom" FROM table; | Renomme une colonne à l’affichage, sans toucher la table |
SELECT DISTINCT col FROM table; | Supprime les doublons dans le résultat |
Partie 2 — Filtrer avec WHERE
WHERE filtre les lignes selon une condition : seules les lignes qui la vérifient apparaissent dans le résultat.
2.1 — Les opérateurs de comparaison
| Opérateur | Signification |
|---|---|
= | égal à |
<> ou != | différent de |
< / > | strictement inférieur / supérieur |
<= / >= | inférieur / supérieur ou égal |
SELECT nom, moyenne
FROM etudiant
WHERE moyenne >= 12;
2.2 — Combiner des conditions : AND, OR, NOT
AND est évalué avant OR, comme la multiplication avant l’addition : utilisez des parenthèses en cas de doute.
SELECT nom FROM etudiant
WHERE id_classe = 1
AND moyenne >= 12;
Q3. Écris une requête qui affiche le nom des élèves de la classe 1 (SISR1) OU de la classe 2 (SISR2).
2.3 — Des raccourcis pratiques : BETWEEN et IN
SELECT nom FROM etudiant
WHERE moyenne BETWEEN 10 AND 15;
Équivaut à : moyenne >= 10 AND moyenne <= 15 (les deux bornes sont incluses).
SELECT nom FROM etudiant
WHERE id_classe IN (1, 2);
Équivaut à : id_classe = 1 OR id_classe = 2, bien plus lisible dès que la liste s’allonge. NOT BETWEEN et NOT IN existent aussi.
2.4 — Chercher un motif de texte : LIKE
%remplace zéro, un ou plusieurs caractères_remplace exactement un caractère
| Condition | Résultat |
|---|---|
WHERE nom LIKE 'M%' | noms commençant par M (Martin…) |
WHERE nom LIKE '%in' | noms se terminant par « in » (Martin…) |
WHERE nom LIKE '%ar%' | noms contenant « ar » n’importe où |
2.5 — Le cas particulier de NULL
NULL ne signifie pas « zéro » ni « vide » : il signifie « valeur inconnue ou non renseignée ».
WHERE moyenne IS NULL
WHERE moyenne IS NOT NULL
Q4. Écris une requête qui affiche le nom des élèves qui ONT une moyenne renseignée.
2.6 — Bilan de la partie 2
| Opérateur | Usage |
|---|---|
=, <>, <, >, <=, >= | Comparer une colonne à une valeur |
AND, OR, NOT | Combiner ou inverser des conditions |
BETWEEN … AND … | Tester une plage de valeurs (bornes incluses) |
IN (…) | Tester l’appartenance à une liste de valeurs |
LIKE avec % et _ | Chercher un motif dans du texte |
IS NULL / IS NOT NULL | Tester l’absence ou la présence d’une valeur |
Partie 3 — Trier et limiter
Deux clauses pour organiser et cadrer le résultat d’une requête.
3.1 — ORDER BY : trier les lignes
Tri croissant par défaut (ASC) ; DESC inverse l’ordre.
SELECT nom, moyenne
FROM etudiant
ORDER BY moyenne DESC;
3.2 — Trier sur plusieurs colonnes
La seconde colonne ne sert qu’à départager les lignes égales sur la première.
SELECT id_classe, nom
FROM etudiant
ORDER BY id_classe, nom;
Q5. Écris une requête qui trie les élèves par classe, puis par moyenne décroissante à l’intérieur de chaque classe.
3.3 — LIMIT : cadrer le résultat
LIMIT réduit le nombre de lignes renvoyées : très utile combiné à un ORDER BY, pour un classement par exemple.
SELECT nom, moyenne
FROM etudiant
ORDER BY moyenne DESC
LIMIT 2;
3.4 — Bilan de la partie 3
| Clause | Effet |
|---|---|
ORDER BY colonne; | Trie par ordre croissant (ASC, par défaut) |
ORDER BY colonne DESC; | Trie par ordre décroissant |
ORDER BY col1, col2; | Trie sur plusieurs colonnes, dans l’ordre indiqué |
LIMIT n; | Ne garde que les n premières lignes du résultat |
Partie 4 — Anatomie d’une requête SELECT
Le point technique clé de ce cours : comprendre ce qui se passe réellement quand SQL s’exécute.
4.1 — Ordre d’écriture ≠ ordre d’exécution
On écrit une requête dans un certain ordre, mais le SGBD ne l’exécute pas dans cet ordre :
| Ce qu’on écrit | Ce qui s’exécute |
|---|---|
1. SELECT | 1. FROM |
2. FROM | 2. WHERE |
3. WHERE | 3. SELECT |
4. ORDER BY | 4. ORDER BY |
4.2 — Pourquoi cette requête échoue
SELECT moyenne * 5 AS note_sur_100
FROM etudiant
WHERE note_sur_100 > 50; -- erreur !
Q6. D’après ce que tu viens de lire, pourquoi cette requête échoue-t-elle ? Comment la corriger ?
4.3 — Erreurs fréquentes de débutant
| Erreur | Conséquence |
|---|---|
| Oublier le point-virgule | Bloque dès qu’on enchaîne plusieurs requêtes. |
| Guillemets doubles pour du texte | En SQL standard : 'Martin', pas "Martin". |
Confondre = et == | SQL utilise = pour tester l’égalité, jamais ==. |
Utiliser = avec NULL | Toujours IS NULL / IS NOT NULL. |
Synthèse — Ce qu’il faut retenir
SELECT nom, prenom, moyenne * 5 AS note_sur_100 -- 3. quelles colonnes
FROM etudiant -- 1. dans quelle table
WHERE id_classe = 1 AND moyenne IS NOT NULL -- 2. quelles lignes
ORDER BY moyenne DESC -- 4. dans quel ordre
LIMIT 3; -- 5. combien de lignes
Auto-évaluation rapide
Q1. Comment afficher uniquement les colonnes nom et moyenne d’une table etudiant ?
Q2. Quelle instruction utiliser pour tester qu’une colonne n’a pas de valeur renseignée ?
Q3. Dans quel ordre le SGBD exécute-t-il réellement les clauses d’une requête SELECT … FROM … WHERE … ORDER BY ?
Q4. Quelle clause permet de ne garder que les 5 premières lignes d’un résultat trié ?
🧠 Testez vos connaissances
5 questions. Répondez puis cliquez sur « Corriger ». Rien n’est enregistré : c’est de l’auto-évaluation.
© 2026 Bruno Jousseaume. Ce cours est publié sous licence CC BY-NC-SA 4.0 : vous pouvez le partager et l’adapter en citant l’auteur et un lien vers cette page, sans usage commercial, et en partageant vos adaptations sous la même licence.