Dans la leçon précédente, nous avons vu comment utiliser la clause WHERE avec des opérateurs de comparaison simples. Mais l'analyse de données réelle nécessite souvent de filtrer selon plusieurs critères à la fois. Pour cela, on utilise les opérateurs logiques : AND, OR et NOT.
Les opérateurs logiques permettent de relier plusieurs expressions dans une clause WHERE pour créer des filtres plus sophistiqués.
AND retourne une ligne seulement si toutes les conditions séparées par AND sont vraies. Il permet de restreindre les résultats.
Exemple (base Sakila) Trouver les films à la fois classés "G" et de moins de 80 minutes :
SELECT title, length, rating
FROM film
WHERE length < 80 AND rating = 'G';
OR retourne une ligne si au moins une des conditions séparées par OR est vraie. Il permet d'élargir les résultats.
Exemple (base Sakila) Trouver les acteurs dont le prénom est "NICK" ou "ED" :
SELECT first_name, last_name
FROM actor
WHERE first_name = 'NICK' OR first_name = 'ED';
NOT affiche une ligne si la condition n'est pas vraie. Il inverse la logique d'une condition.
Exemple (base Sakila) Trouver tous les films sauf ceux classés "R" :
SELECT title, rating
FROM film
WHERE NOT rating = 'R';
Quand vous combinez plusieurs opérateurs dans une requête (ex. AND et OR), SQL suit un ordre d'évaluation précis :
NOT est évalué en premier.AND en second.OR en dernier.La puissance des parenthèses :
Comme en mathématiques, utilisez des parenthèses () pour contrôler l'ordre d'évaluation et rendre vos requêtes plus lisibles.
-- Cette requête trouve les films (classés G OU PG) ET courts
SELECT title, length, rating
FROM film
WHERE (rating = 'G' OR rating = 'PG') AND length < 60;
Points clés de cette leçon :
AND pour que toutes les conditions soient remplies.OR pour trouver des correspondances sur plusieurs critères.NOT pour exclure des données spécifiques.() quand vous mélangez AND et OR pour éviter les erreurs de logique et améliorer la clarté.Dans la prochaine leçon, nous apprendrons à trier et limiter les résultats pour organiser vos données plus efficacement.