Filtrer avec une condition simple
Objectif : Sélectionner les lignes qui satisfont une comparaison sur une colonne.
Une table peut contenir des centaines de lignes alors que votre question ne porte que sur une partie d’entre elles. Par exemple, vous pouvez vouloir afficher les exemplaires disponibles ou les adhérents inscrits après une date donnée. Avec WHERE, vous indiquez à MariaDB quelles lignes conserver dans le résultat.
Vous avez déjà appris à choisir explicitement les colonnes à afficher et à relier des tables avec INNER JOIN. Cette leçon se concentre sur le filtrage d’une table : commencez par sélectionner les colonnes utiles, puis ajoutez une condition qui doit être vraie pour chaque ligne retenue.
Filtrer avec une comparaison
La clause WHERE suit la clause FROM. Elle contient une comparaison entre une colonne et une valeur. Pour comparer, vous pouvez notamment employer = (égal), <> (différent), > (supérieur), >= (supérieur ou égal), < (inférieur) ou <= (inférieur ou égal).
Dans le schéma de la médiathèque, exemplaires.disponible indique si un exemplaire est disponible. La valeur 1 représente vrai et 0 faux dans une colonne booléenne MariaDB. Cette requête affiche uniquement les exemplaires disponibles, avec leur identifiant et leur code-barres.
-- Afficher les exemplaires disponibles
SELECT id_exemplaire, code_barres
FROM exemplaires
WHERE disponible = 1;id_exemplaire | code_barres
--------------+------------
1 | MED-0001
3 | MED-0003Le résultat réel dépend du contenu de votre base ; les lignes ci-dessus illustrent une sortie possible. Les exemplaires dont disponible vaut 0 ne sont pas affichés. Vous pouvez appliquer le même principe à des nombres ou à des dates, en adaptant la comparaison à la question posée.
-- Afficher les adhérents inscrits à partir du 1er janvier 2024
SELECT id_adherent, nom, prenom, date_inscription
FROM adherents
WHERE date_inscription >= '2024-01-01';id_adherent | nom | prenom | date_inscription
------------+---------+--------+----------------
2 | Bernard | Inès | 2024-03-12
4 | Martin | Hugo | 2024-07-05Une chaîne de caractères ou une date s’écrit entre apostrophes, tandis qu’une valeur numérique s’écrit sans apostrophes. Dans l’exemple, >= conserve la date indiquée ainsi que toutes les dates qui la suivent. Vérifiez le type de la colonne et la forme des valeurs dans votre schéma avant de rédiger la condition.
Repérer une valeur absente
Dans une base, NULL représente une information absente ou inconnue. Ce n’est ni le nombre zéro ni une chaîne vide. Une comparaison ordinaire, comme courriel = NULL, ne permet pas de rechercher ces valeurs : utilisez IS NULL pour les repérer et IS NOT NULL pour retenir les valeurs présentes.
-- Repérer les adhérents sans courriel renseigné
SELECT id_adherent, nom, prenom
FROM adherents
WHERE courriel IS NULL;id_adherent | nom | prenom
------------+---------+--------
5 | Petit | LéaAjoutez ces requêtes à la fin de requetes.sql, après les requêtes déjà conservées, et laissez leurs commentaires pour identifier leur objectif. Exécutez-les dans votre client MariaDB, puis comparez les colonnes et les lignes obtenues à la question de départ. Les jeux de données peuvent différer : c’est la condition SQL qui détermine quelles lignes sont retenues.
À retenir
- Placez une condition après FROM avec WHERE pour ne conserver que les lignes qui la satisfont.
- Choisissez l’opérateur de comparaison adapté : égalité, différence ou comparaison de nombres et de dates.
- Écrivez les chaînes de caractères et les dates entre apostrophes ; écrivez les nombres sans apostrophes.
- Testez les valeurs absentes avec IS NULL ou IS NOT NULL, jamais avec = NULL.
Dans la prochaine leçon, vous combinerez plusieurs conditions pour répondre à des demandes plus précises.