Les opérateurs logiques, c’est des outils qui t’aident à combiner des conditions dans tes requêtes pour filtrer les données de façon plus fine. T’as sûrement déjà vu ça dans d’autres langages de programmation. Si on compare les requêtes à un programme anti-spam dans ta boîte mail, les opérateurs logiques, c’est un peu comme les règles qui décident si un mail va dans le dossier "Spam" ou reste dans "Boîte de réception".
SQL, c’est un outil qu’on utilise souvent pour sélectionner ou analyser des données. Les opérateurs logiques (AND, OR, NOT) te permettent de combiner plusieurs conditions dans une seule requête, pour répondre à des questions plus complexes, genre :
- Quels étudiants ont plus de 18 ans et ont la note "A" ?
- Quels produits sont dans la catégorie "Électronique" ou "Électroménager" ?
- Quels clients n’ont pas fait d’achats ?
Allez, on va voir les trois opérateurs logiques principaux en SQL :
AND: les deux conditions doivent être vraies.OR: au moins une des conditions doit être vraie.NOT: inverse (nie) la condition.
Opérateur AND : les deux conditions sont vraies
L’opérateur AND te permet de dire que les deux parties de la condition doivent être remplies pour que la ligne soit dans le résultat.
Syntaxe
SELECT colonne1, colonne2
FROM table
WHERE condition AND condition2;
Exemple 1 : Filtrer les étudiants de plus de 18 ans et avec la note "A"
Imaginons qu’on a une table students :
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 20 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 17 | A |
| 4 | Anna | 22 | A |
Requête :
SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A';
Résultat :
| name | age | grade |
|---|---|---|
| Alex | 20 | A |
| Anna | 22 | A |
Exemple 2 : Filtrer les employés du département "RH" et avec un salaire supérieur à 50000
SELECT name, department, salary
FROM employees
WHERE department = 'RH' AND salary > 50000;
Opérateur OR : au moins une condition est vraie
L’opérateur OR s’utilise quand tu veux sélectionner les lignes qui remplissent au moins une des conditions.
Syntaxe
SELECT colonne1, colonne2
FROM table
WHERE condition OR condition2;
Exemple 1 : Filtrer les étudiants avec la note "A" ou "B"
SELECT name, age, grade
FROM students
WHERE grade = 'A' OR grade = 'B';
Résultat :
| name | age | grade |
|---|---|---|
| Alex | 20 | A |
| Maria | 19 | B |
| Otto | 17 | A |
| Anna | 22 | A |
Exemple 2 : Produits de la catégorie "Électronique" ou avec un prix inférieur à 100
Table products :
| product_id | name | category | price |
|---|---|---|---|
| 1 | Téléviseur | Électronique | 300 |
| 2 | Fer à repasser | Électroménager | 50 |
| 3 | Smartphone | Électronique | 700 |
| 4 | Bouilloire | Électroménager | 80 |
SELECT name, category, price
FROM products
WHERE category = 'Électronique' OR price < 100;
Résultat :
| name | category | price |
|---|---|---|
| Téléviseur | Électronique | 300 |
| Fer à repasser | Électroménager | 50 |
| Bouilloire | Électroménager | 80 |
| Smartphone | Électronique | 700 |
Opérateur NOT : inversion de la condition
Si AND et OR posent des conditions qui doivent être vraies, NOT fait tout l’inverse : il sélectionne les lignes pour lesquelles la condition indiquée est fausse.
Syntaxe
SELECT colonne1, colonne2
FROM table
WHERE NOT condition;
Exemple 1 : Filtrer les étudiants qui n’ont pas la note "A"
SELECT name, age, grade
FROM students
WHERE NOT grade = 'A';
Résultat :
| name | age | grade |
|---|---|---|
| Maria | 19 | B |
Exemple 2 : Extraire les produits qui ne sont pas dans la catégorie "Électronique"
SELECT name, category, price
FROM products
WHERE NOT category = 'Électronique';
Combinaison des opérateurs logiques
Tu peux combiner les opérateurs logiques pour créer des conditions encore plus complexes. Par exemple, si tu veux sélectionner les étudiants de plus de 18 ans et avec la note "A" ou "B", tu peux combiner AND et OR.
Syntaxe avec combinaison
SELECT colonne1, colonne2
FROM table
WHERE (condition1 AND condition2) OR condition3;
Exemple : Étudiants de plus de 18 ans avec la note "A" ou étudiants avec la note "B"
SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR grade = 'B';
Résultat :
| name | age | grade |
|---|---|---|
| Alex | 20 | A |
| Anna | 22 | A |
| Maria | 19 | B |
Priorité d’exécution des opérateurs
Faut pas oublier que SQL exécute les opérateurs logiques dans cet ordre :
NOTANDOR
Tu peux utiliser des parenthèses pour changer l’ordre d’exécution. Sans parenthèses, le résultat peut être chelou !
Exemple : Comparaison avec et sans parenthèses
Qu’est-ce qui se passe dans cette requête ?
SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A' OR grade = 'B';
Cette requête sélectionne les étudiants :
- Qui ont plus de 18 ans et la note "A".
- Qui ont la note "B".
L’ordre de priorité des opérateurs donne le même résultat qu’avec les parenthèses :
SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR (grade = 'B');
Mais si on ajoute des parenthèses :
SELECT name, age, grade
FROM students
WHERE age > 18 AND (grade = 'A' OR grade = 'B');
Là, tu sélectionnes les étudiants de plus de 18 ans avec la note "A" ou "B". Les parenthèses, ça change tout !
Erreurs fréquentes avec les opérateurs logiques
- Oublier les parenthèses. Ça peut donner des résultats inattendus, surtout quand tu combines
ANDetOR. - Utiliser
NOTsans bien piger quelles lignes tu exclus. - Se tromper d’opérateur logique. Genre, mettre
ANDau lieu deORou l’inverse. - Des conditions trop complexes. Des conditions trop longues avec plein de
AND,OR,NOTsans commentaires, ça devient vite illisible.
Ces opérateurs, c’est la base de toutes les requêtes un peu balèzes. Maintenant, t’es prêt à écrire des requêtes qui font exactement ce que tu veux !
GO TO FULL VERSION