Leçon 3 sur 20

Filtrer avec WHERE et trier avec ORDER BY

Transformez une lecture complète en réponse précise grâce aux conditions et au tri.

18 minSans compte

À la fin de cette leçon

  • Construire une condition WHERE
  • Combiner plusieurs critères
  • Trier avec ASC et DESC

WHERE conserve les lignes qui respectent une condition

Sans filtre, la requête retourne toutes les lignes. WHERE s’écrit après FROM et compare une colonne à une valeur.

Les textes sont entourés d’apostrophes. Les nombres restent sans apostrophes lorsqu’ils sont stockés comme nombres.

  • = égal
  • <> différent
  • > et < comparaisons strictes
  • >= et <= incluent la valeur limite
Produits à moins de 50 €
SELECT produit, prix
FROM produits
WHERE prix < 50;

Combiner avec AND, OR et NOT

AND exige que les deux conditions soient vraies. OR accepte qu’une seule condition soit vraie. Des parenthèses rendent la priorité explicite.

NOT inverse un test. Il doit être utilisé avec une formulation qui reste facile à relire.

Deux conditions obligatoires
SELECT produit, categorie, prix
FROM produits
WHERE categorie = 'Informatique'
  AND prix <= 100;
Quand AND et OR apparaissent ensemble, utilisez des parenthèses même si vous connaissez leur priorité. Le prochain lecteur vous remerciera.

ORDER BY organise le résultat

ORDER BY intervient après le filtre. ASC trie en ordre croissant et constitue généralement la valeur par défaut. DESC applique l’ordre décroissant.

Plusieurs colonnes peuvent être indiquées. La deuxième départage les lignes identiques selon la première.

Du prix le plus élevé au plus faible
SELECT produit, prix
FROM produits
WHERE prix >= 10
ORDER BY prix DESC, produit ASC;

Attention aux valeurs NULL

NULL signifie absence de valeur connue. Il ne se compare pas avec = NULL.

Utilisez IS NULL pour trouver les valeurs absentes et IS NOT NULL pour les valeurs renseignées.

Clients sans ville renseignée
SELECT nom
FROM clients
WHERE ville IS NULL;

Rendre un filtre explicable et reproductible

Un filtre traduit une règle métier. Écrivez cette règle en phrase avant de la convertir en SQL : commandes payées, créées pendant juillet, dont le montant est au moins égal à 100 €. Chaque mot influence l’opérateur et les bornes.

Les dates demandent une attention particulière. Pour une période complète, une borne de début incluse et une borne de fin exclue évitent les problèmes d’heures : date >= '2026-07-01' AND date < '2026-08-01'.

Un classement doit aussi être stable. Lorsque deux lignes ont la même valeur principale, ajoutez un second critère unique afin d’obtenir le même ordre à chaque exécution et dans chaque export paginé.

Filtre daté et ordre stable
SELECT id_commande, date_commande, montant
FROM commandes
WHERE statut = 'Payée'
  AND date_commande >= DATE '2026-07-01'
  AND date_commande < DATE '2026-08-01'
ORDER BY montant DESC, id_commande ASC;
Une borne, un statut ou un tri implicite finit presque toujours par créer une divergence dans un rapport.

Vérifiez votre compréhension

Affichez les produits dont le prix est au moins 40 €, du moins cher au plus cher.

À compléter
SELECT produit, prix
FROM produits
WHERE -- condition
ORDER BY -- tri;

Progression

Avez-vous terminé cette leçon ?

Votre choix reste dans ce navigateur et se synchronise aussi avec votre compte lorsque vous êtes connecté.

Leçon suivante