SQL Leçon 2
Filtrer et trier
Ne garder que les lignes qui t'intéressent avec WHERE, puis les trier et en limiter le nombre.
À la fin de cette leçon, tu sauras
- Filtrer des lignes avec WHERE
- Combiner des conditions avec AND et OR, chercher avec LIKE
- Trier avec ORDER BY et limiter avec LIMIT
WHERE : filtrer
On ajoute WHERE suivi d'une condition. Seules les lignes pour lesquelles la condition est vraie sont gardées.
SELECT prenom, nom FROM eleves WHERE ville = 'Chartres';
SELECT prenom FROM eleves WHERE age >= 19;Les textes s'écrivent entre apostrophes ('Chartres'), les nombres sans rien. Les comparaisons : =, <> (différent), <, >, <=, >=.
Plusieurs conditions
SELECT prenom FROM eleves WHERE ville = 'Chartres' AND age = 18;
SELECT prenom FROM eleves WHERE ville = 'Dreux' OR ville = 'Paris';
SELECT prenom FROM eleves WHERE age BETWEEN 18 AND 19;Chercher un morceau de texte : LIKE
LIKE compare avec un modèle, où % veut dire « n'importe quels caractères ».
SELECT prenom FROM eleves WHERE nom LIKE 'D%'; -- les noms qui commencent par D
SELECT prenom FROM eleves WHERE nom LIKE '%in'; -- ceux qui finissent par « in »Les deux tirets -- commencent un commentaire.
Trier et limiter
SELECT prenom, age FROM eleves ORDER BY age DESC;
SELECT prenom FROM eleves ORDER BY nom ASC LIMIT 3;ORDER BY trie : ASC du plus petit au plus grand (par défaut), DESC dans l'autre sens. LIMIT 3 garde seulement les 3 premières lignes.
Attention : l'ordre des mots est imposé : SELECT … FROM … WHERE … ORDER BY … LIMIT ….
À toi de jouer
Écris une requête qui affiche le prénom et l'âge des élèves qui habitent à Chartres, du plus âgé au plus jeune.
Écris une requête : elle s'exécute pendant que tu tapes, sur une base d'exemple qui repart de zéro à chaque fois.
Voir les tables de la base d'exemple
classes (3 lignes)
| id | nom |
|---|---|
| 1 | BTS SIO 1 |
| 2 | BTS SIO 2 |
| 3 | Terminale STMG |
eleves (7 lignes)
| id | prenom | nom | age | ville | classe_id |
|---|---|---|---|---|---|
| 1 | Léa | Martin | 18 | Chartres | 1 |
| 2 | Tom | Bernard | 19 | Dreux | 2 |
| 3 | Inès | Petit | 18 | Chartres | 1 |
| 4 | Hugo | Durand | 20 | Paris | 2 |
| 5 | Chloé | Lambert | 17 | Lucé | 3 |
| 6 | Nathan | Dubois | 19 | Chartres | 1 |
| 7 | Sarah | Moreau | 18 | Dreux | NULL |
notes (9 lignes)
| id | eleve_id | matiere | note |
|---|---|---|---|
| 1 | 1 | Développement | 16 |
| 2 | 1 | Réseau | 12 |
| 3 | 2 | Développement | 11 |
| 4 | 2 | Réseau | 15 |
| 5 | 3 | Développement | 18 |
| 6 | 4 | Réseau | 9 |
| 7 | 6 | Développement | 13 |
| 8 | 6 | Réseau | 14 |
| 9 | 5 | Gestion | 15 |
- Le résultat montre les élèves de Chartres, du plus âgé au plus jeune
- La requête lit prenom et age dans eleves
- Elle filtre la ville Chartres avec WHERE
- Elle trie par âge décroissant
- WHERE est placé avant ORDER BY
- Elle se termine par un point-virgule
Bravo, toutes les consignes sont réussies !
Bloqué ? Voir une solution
SELECT prenom, age FROM eleves
WHERE ville = 'Chartres'
ORDER BY age DESC;