Cours SQL et MySQL · Module 3: Filtrer (WHERE)

Combiner les conditions : AND, OR, NOT

2 min de lecture
Dans cette leçon4

Souvent, une seule condition ne suffit pas. Le scribe veut des parchemins qui sont à la fois récents et disponibles, ou des auteurs venus de Pologne ou de Grèce. Pour combiner des conditions, nous utilisons trois mots : AND, OR et NOT.

AND - les deux conditions à la fois

L'opérateur AND exige que toutes les conditions réunies soient remplies :

1SELECT * FROM ksiazki
2WHERE rok_wydania > 1900 AND dostepna = 1;

Cela signifie : « Des livres publiés après 1900 ET disponibles en même temps ». Une ligne n'entre dans le résultat que lorsque les deux conditions sont vraies.

OR - une seule condition suffit

L'opérateur OR exige qu'au moins une des conditions soit remplie :

1SELECT * FROM autorzy
2WHERE kraj = 'Polska' OR kraj = 'Grecja';

Cela signifie : « Des auteurs venus de Pologne OU de Grèce ». Il suffit qu'une seule condition soit vraie.

NOT - la négation

L'opérateur NOT inverse une condition - il renvoie ce qui ne la remplit PAS :

1SELECT * FROM ksiazki
2WHERE NOT dostepna = 1;

Cela signifie : « Des livres qui ne sont PAS disponibles ».

Les parenthèses - l'ordre compte

Quand nous mélangeons AND et OR, utilise des parenthèses ( ) pour préciser l'ordre. AND a une priorité plus élevée que OR, les parenthèses te protègent donc d'une erreur :

1SELECT * FROM ksiazki
2WHERE (kategoria_id = 1 OR kategoria_id = 2) AND cena > 30;

Ici, nous vérifions d'abord la catégorie (l'une des deux), et seulement ensuite le prix. Les parenthèses fonctionnent comme en mathématiques - ce qui est à l'intérieur est calculé en premier. Souviens-t'en !

Tu as repéré une erreur dans cette leçon ?

Teste tes connaissances

Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.

  1. 1. Quelles lignes la condition va-t-elle renvoyer : WHERE rok_wydania > 1900 AND dostepna = 1 ?

  2. 2. Quelles lignes la condition va-t-elle renvoyer : WHERE kraj = 'Polska' OR kraj = 'Grecja' ?

Voici 2 des 4 questions de cette leçon. Réponds aux autres dans le jeu.

Tâches pratiques dans le jeu

  • Éditeur de code

    Écris une requête qui récupère toutes les colonnes de la table ksiazki pour les livres publiés après 1900 (rok_wydania supérieur à 1900) ET disponibles en même temps (dostepna égal à 1).

  • Éditeur de code

    Écris une requête qui récupère toutes les colonnes de la table ksiazki pour les livres de la catégorie dont kategoria_id vaut 1 ET dont le cena est inférieur à 50.

  • Tri vertical

    Ordonne les lignes d'une requête filtrant avec deux conditions (de la première à la dernière ligne) :

  • Tri horizontal

    Ordonne sur une ligne la condition combinant deux exigences avec l'opérateur AND :