Maintenez SQLtest en vie : Aidez à couvrir les coûts du serveur de ce mois-ci de 100 $ pour garder toutes les leçons et le terrain de jeu SQL en ligne. Soutenez le projet →
Code SQL copié dans le presse-papiers

Leçon 2.2 · Temps de lecture : ~6 min

La clause SQL WHERE filtre les lignes d'une table en évaluant une condition pour chaque enregistrement — seules les lignes où la condition est vraie sont retournées. Dans cette leçon, vous apprendrez les opérateurs de comparaison, BETWEEN, IN, la recherche de motifs avec LIKE et la bonne façon de gérer les valeurs NULL.

Clause SQL WHERE : filtrer les données dans les requêtes SELECT

L'instruction SELECT seule renvoie toutes les lignes d'une table. En pratique, vous n'avez généralement besoin que d'un sous-ensemble de données répondant à des critères précis — c'est exactement à cela que sert la clause WHERE.

Clause SQL WHERE : chaque ligne de la table est testée et seules les lignes où la condition est vraie sont renvoyées ; opérateurs de comparaison, BETWEEN, IN, LIKE et IS NULL

Qu'est-ce que la clause SQL WHERE ?

La clause WHERE filtre les enregistrements avant qu'ils soient inclus dans le résultat. Seules les lignes satisfaisant la condition spécifiée sont retournées.

Syntaxe de base

SELECT colonne1, colonne2, ...
FROM nom_table
WHERE condition;

La condition est une expression qui s'évalue à vrai (true), faux (false) ou inconnu (si des valeurs NULL sont impliquées). Seules les lignes où la condition est vraie sont retournées.


Opérateurs de comparaison SQL dans WHERE

SQL propose un ensemble d'opérateurs pour comparer les valeurs dans la clause WHERE :

OpérateurDescriptionExemple
=Égal àWHERE last_name = 'SMITH'
<> ou !=Différent deWHERE store_id <> 1
>Supérieur àWHERE rental_rate > 2.99
<Inférieur àWHERE length < 60
>=Supérieur ou égal àWHERE replacement_cost >= 20.00
<=Inférieur ou égal àWHERE amount <= 5.00
SELECT title, rental_rate, replacement_cost
FROM film
WHERE rental_rate = 4.99;

Résultat : tous les films dont le tarif de location est exactement 4,99 $.


Opérateurs SQL BETWEEN, IN et LIKE

SQL inclut des opérateurs puissants pour filtrer par plage, par liste et par motif.

BETWEEN — filtre par plage

Filtre les valeurs dans un intervalle donné (bornes incluses).

SELECT payment_id, amount, payment_date
FROM payment
WHERE amount BETWEEN 5.00 AND 10.00;

Résultat : paiements de 5,00 $ à 10,00 $ inclus.

IN — correspondance avec une liste

Vérifie si une valeur appartient à une liste spécifiée. Alternative concise à plusieurs conditions OR.

SELECT first_name, last_name, store_id
FROM customer
WHERE store_id IN (1, 2);

Résultat : clients appartenant au magasin 1 ou 2.

LIKE — recherche par motif

Recherche un motif dans une colonne de texte à l'aide de caractères génériques :

  • % — zéro, un ou plusieurs caractères quelconques.
  • _ — exactement un caractère.
-- Films dont le titre commence par 'A'
SELECT title
FROM film
WHERE title LIKE 'A%';

-- Films dont la deuxième lettre du titre est 'I'
SELECT title
FROM film
WHERE title LIKE '_I%';

Comment filtrer les valeurs NULL en SQL

Il est impossible d'utiliser = ou <> pour vérifier NULL — ces comparaisons retournent toujours inconnu, jamais vrai. Utilisez IS NULL ou IS NOT NULL.

-- Incorrect : ne renvoie aucune ligne
-- WHERE return_date = NULL

-- Correct
SELECT rental_id, rental_date, return_date
FROM rental
WHERE return_date IS NULL;

Résultat : toutes les locations qui n'ont pas encore été retournées.


Points clés :

  • La clause WHERE filtre les lignes avant qu'elles ne soient retournées dans le résultat.
  • Les chaînes et les dates doivent être entourées de guillemets simples ('SMITH') ; les nombres n'en ont pas besoin.
  • BETWEEN est inclusif : BETWEEN 5 AND 10 inclut 5 et 10.
  • IN est une alternative concise à plusieurs conditions OR.
  • LIKE utilise % (séquence quelconque) et _ (un seul caractère).
  • N'utilisez jamais = avec NULL — utilisez toujours IS NULL ou IS NOT NULL.

Questions fréquentes

Quelle est la différence entre WHERE et HAVING en SQL ?

WHERE filtre les lignes avant le regroupement et l'agrégation. HAVING filtre après — il travaille sur les résultats de GROUP BY. Utilisez WHERE pour filtrer des lignes individuelles, HAVING pour filtrer des groupes agrégés.

Peut-on utiliser plusieurs conditions dans WHERE ?

Oui. Combinez les conditions avec AND (les deux doivent être vraies), OR (au moins une doit être vraie) ou NOT (négation). Utilisez des parenthèses pour contrôler l'ordre d'évaluation.

Pourquoi WHERE colonne = NULL ne retourne-t-il aucun résultat ?

Parce que NULL représente une valeur inconnue — comparer quoi que ce soit à NULL avec = retourne toujours inconnu, jamais vrai ou faux. SQL exige IS NULL ou IS NOT NULL pour vérifier l'absence de valeur.

Essayez de resoudre les exercices suivants pour consolider ce que vous avez appris dans cette lecon.

  1. Trouver les films longs
  2. Acteurs par prénom
  3. Trouver les membres du personnel par condition
  4. Trouver les films par description
  5. Trouver les clients actifs