CodeGym /Cours /SQL SELF /Opérateurs logiques (AND, OR, NOT) : combiner des conditi...

Opérateurs logiques (AND, OR, NOT) : combiner des conditions

SQL SELF
Niveau 2 , Leçon 2
Disponible

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 :

  1. AND : les deux conditions doivent être vraies.
  2. OR : au moins une des conditions doit être vraie.
  3. 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 :

  1. NOT
  2. AND
  3. OR

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 :

  1. Qui ont plus de 18 ans et la note "A".
  2. 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

  1. Oublier les parenthèses. Ça peut donner des résultats inattendus, surtout quand tu combines AND et OR.
  2. Utiliser NOT sans bien piger quelles lignes tu exclus.
  3. Se tromper d’opérateur logique. Genre, mettre AND au lieu de OR ou l’inverse.
  4. Des conditions trop complexes. Des conditions trop longues avec plein de AND, OR, NOT sans 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 !

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION