Code SQL copié dans le presse-papiers
Cette leçon SQL porte sur la filtration des lignes avec la clause WHERE. Apprenez à utiliser les opérateurs de comparaison, les filtres de plage avec BETWEEN, la recherche dans une liste avec IN et la recherche par motif avec LIKE. La leçon aborde aussi la distinction essentielle pour traiter les valeurs NULL avec IS NULL et IS NOT NULL. Maîtrisez les techniques de filtrage pour extraire des informations précises et optimiser vos requêtes pour une analyse efficace.
RU EN PT

Leçon 2.2 : Filtration des lignes — la clause WHERE

Filtrer les données avec la clause WHERE

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.

Qu'est-ce que 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.

Syntaxe de base

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.


Les opérateurs de comparaison

SQL propose divers opérateurs pour comparer des 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

Exemple (base Sakila)

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;

Opérateurs de filtrage spéciaux

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

1. BETWEEN

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;

2. IN

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

3. LIKE

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.

Exemple (base Sakila)

-- 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%';

Attention : filtrer les valeurs NULL

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.

Exemple (base Sakila)

-- 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 :

  • La clause WHERE filtre les lignes avant qu'elles ne soient retournées dans le résultat.
  • Les valeurs de type chaîne ou date doivent être entourées de guillemets simples (ex. 'SMITH').
  • Les valeurs numériques n'ont pas besoin de guillemets.
  • Utilisez LIKE pour la recherche par motif et IN pour la recherche dans une liste.
  • Ne jamais utiliser = 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.