L'instruction SELECT retourne toutes les lignes d'une table par défaut. Cependant, dans la pratique, vous avez souvent besoin d'un sous-ensemble de données répondant à des critères précis. C'est là qu'intervient la clause WHERE.
La clause WHERE permet de filtrer les enregistrements. Elle garantit que seules les lignes satisfaisant une condition donnée sont incluses dans le résultat.
SELECT column1, column2, ...
FROM table_name
WHERE condition;
La condition est une expression qui évalue à vrai, faux ou inconnu (si des valeurs NULL sont impliquées). Seules les lignes pour lesquelles la condition est vraie sont retournées.
SQL propose divers opérateurs pour comparer des valeurs dans la clause WHERE :
| Opérateur | Description | Exemple |
|---|---|---|
= | Égal à | WHERE last_name = 'SMITH' |
<> ou != | Différent de | WHERE 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 |
Pour trouver les films dont le tarif de location est de 4,99 $ dans la table film :
SELECT title, rental_rate, replacement_cost
FROM film
WHERE rental_rate = 4.99;
SQL inclut des opérateurs puissants pour filtrer par plage, liste ou motif.
Filtre les valeurs dans une plage donnée (inclusif).
-- Trouver les paiements entre 5,00 $ et 10,00 $
SELECT payment_id, amount, payment_date
FROM payment
WHERE amount BETWEEN 5.00 AND 10.00;
Recherche une valeur dans une liste spécifiée.
-- Trouver les clients de certains magasins
SELECT first_name, last_name, store_id
FROM customer
WHERE store_id IN (1, 2);
Recherche un motif dans une colonne à l'aide de jokers :
% représente zéro, un ou plusieurs caractères._ représente un seul caractère.-- Trouver les films commençant par 'A'
SELECT title
FROM film
WHERE title LIKE 'A%';
-- Trouver les films dont la deuxième lettre est 'I'
SELECT title
FROM film
WHERE title LIKE '_I%';
Comme vu dans la leçon sur les NULL, on ne peut pas utiliser = ou <> pour tester NULL. Il faut utiliser IS NULL ou IS NOT NULL.
-- Incorrect
-- WHERE return_date = NULL
-- Correct
SELECT rental_id, rental_date, return_date
FROM rental
WHERE return_date IS NULL;
Points clés de cette leçon :
WHERE filtre les lignes avant qu'elles ne soient retournées dans le résultat.'SMITH').LIKE pour la recherche par motif et IN pour la recherche dans une liste.= avec NULL ; toujours utiliser IS NULL.Dans la prochaine leçon, nous verrons comment combiner plusieurs conditions pour créer des filtres encore plus puissants.