Cours

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.

20 min

À 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.

requete.sql
Résultat

É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)

idnom
1BTS SIO 1
2BTS SIO 2
3Terminale STMG

eleves (7 lignes)

idprenomnomagevilleclasse_id
1LéaMartin18Chartres1
2TomBernard19Dreux2
3InèsPetit18Chartres1
4HugoDurand20Paris2
5ChloéLambert17Lucé3
6NathanDubois19Chartres1
7SarahMoreau18DreuxNULL

notes (9 lignes)

ideleve_idmatierenote
11Développement16
21Réseau12
32Développement11
42Réseau15
53Développement18
64Réseau9
76Développement13
86Réseau14
95Gestion15
  • 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
Bloqué ? Voir une solution
SELECT prenom, age FROM eleves
WHERE ville = 'Chartres'
ORDER BY age DESC;

Quiz

1Quelle requête trouve les élèves de 18 ans ?
2Que trouve WHERE prenom LIKE '%a' ?
3Comment avoir les 5 élèves les plus âgés ?