Leçon 3 / 8
Leçon 03 · Partie 1 — Lire des données

Filtrer et trier

Pourquoi filtrer ?

SELECT * FROM clients renvoie tous les clients. Mais si tu en as 100 000, tu ne veux pas tout voir d'un coup. Tu veux les clients de Paris, ou ceux qui ont commandé ce mois-ci. C'est le rôle de WHERE.

WHERE : poser une condition

WHERE filtre les lignes. Seules les lignes qui correspondent à la condition apparaissent.

SELECT *
FROM clients
WHERE ville = 'Paris';

Résultat : uniquement les lignes où la colonne ville vaut exactement "Paris".

-- Clients avec un id supérieur à 10
SELECT *
FROM clients
WHERE id > 10;

-- Produits qui coûtent moins de 20€
SELECT nom, prix
FROM produits
WHERE prix < 20;

Les opérateurs de comparaison :

  • = égal à
  • != ou <> différent de
  • > supérieur à — >= supérieur ou égal
  • < inférieur à — <= inférieur ou égal

AND et OR : combiner des conditions

AND : les deux conditions doivent être vraies. OR : au moins une condition doit être vraie.

-- Clients de Paris ET dont l'id est supérieur à 5
SELECT *
FROM clients
WHERE ville = 'Paris' AND id > 5;

-- Clients de Paris OU de Lyon
SELECT *
FROM clients
WHERE ville = 'Paris' OR ville = 'Lyon';
💡

Utilise des parenthèses pour clarifier l'ordre des conditions complexes. Comme en maths : (A AND B) OR C est différent de A AND (B OR C).

IN : valeur dans une liste

Plutôt que plusieurs OR, IN te permet de tester si une valeur fait partie d'une liste.

-- Clients de Paris, Lyon ou Bordeaux
SELECT *
FROM clients
WHERE ville IN ('Paris', 'Lyon', 'Bordeaux');

C'est équivalent à trois OR, mais bien plus lisible.

LIKE : recherche partielle dans du texte

LIKE permet de chercher un motif dans une colonne texte. On utilise % comme joker (remplace zéro ou plusieurs caractères).

-- Clients dont le nom commence par "M"
SELECT *
FROM clients
WHERE nom LIKE 'M%';

-- Clients dont l'email contient "exemple"
SELECT *
FROM clients
WHERE email LIKE '%exemple%';
🔍

'M%'

Commence par "M"

ex: Marie, Martin
🔍

'%on'

Finit par "on"

ex: Dupont, Martin
🔍

'%mar%'

Contient "mar"

ex: Marie, Kamar

ORDER BY : trier les résultats

Par défaut, l'ordre des lignes n'est pas garanti. Pour trier, on utilise ORDER BY.

-- Trier par nom (ordre alphabétique croissant)
SELECT *
FROM clients
ORDER BY nom ASC;

-- Trier par prix décroissant (le plus cher en premier)
SELECT *
FROM produits
ORDER BY prix DESC;
  • ASC — ordre croissant (A→Z, 0→9) — c'est la valeur par défaut
  • DESC — ordre décroissant (Z→A, 9→0)

LIMIT : limiter le nombre de résultats

LIMIT récupère seulement les N premières lignes. Très utile pour les listes "Top 10" ou pour ne pas charger des millions de lignes.

-- Les 5 produits les plus chers
SELECT nom, prix
FROM produits
ORDER BY prix DESC
LIMIT 5;

Tout combiner

-- Clients de Paris, triés par nom, 10 premiers seulement
SELECT nom, email
FROM clients
WHERE ville = 'Paris'
ORDER BY nom ASC
LIMIT 10;
// À retenir
  • WHERE colonne = 'valeur' filtre les lignes selon une condition
  • AND / OR combinent plusieurs conditions
  • IN ('a', 'b', 'c') teste si une valeur est dans une liste
  • LIKE 'M%' recherche un motif dans du texte (% = joker)
  • ORDER BY colonne ASC/DESC trie les résultats
  • LIMIT N limite à N lignes — toujours après ORDER BY