Temps de lecture approximative : 8 minutes
AND
et OR
Nous l'avons vu dans le chapitre précédent consacré à la commande WHERE
, il est possible de filtrer les résultats d'une requête en fonction d'une condition. Les opérateurs logiques AND
et OR
peuvent être utilisés en complément de la commande WHERE
pour combiner des conditions. L’utilisation la plus basique de cette commande s’effectue de la manière suivante :
SELECT une_colonne FROM une_table WHERE une_condition AND une_autre_condition;
SELECT une_colonne FROM une_table WHERE une_condition OR encore_condition;
Afin de mettre en évidence l'utilisation des commandes AND
et OR
, et de comprendre rapidement comment ces dernières fonctionnent, nous utiliserons la table clients qui contient les colonnes et données suivantes pour nos différents exemples. Cette dernière simule la table qui contient les clients d'une entreprise quelconque.
id | prenom | nom | ville | commandes | |
---|---|---|---|---|---|
1 | Marine | Leroy | mleroy@example.com | Paris | 3 |
2 | Jean | René | jrene@example.com | Lyon | 1 |
3 | Ted | Bundy | tbundy@example.com | Lyon | 2 |
4 | Paul | Bismuth | pbismuth@example.com | Paris | NULL |
5 | Caroline | Rodriguez | crodriguez@example.com | Berlin | 2 |
AND
En SQL, l'opérateur logique AND
permet de conditionner l'affichage d'une requête en fonction de plusieurs conditions. Il s'utilise comme un ET. L'opérateur logique AND
ne peut être utilisé sans la commande WHERE
. Sans plus attendre, un exemple concret. Nous souhaitons rechercher dans la table, les clients qui ont commandé et qui sont dans la ville de Paris.
SELECT * FROM clients WHERE ville = 'Paris' AND commandes IS NOT NULL;
Résultat
id | prenom | nom | ville | commandes | |
---|---|---|---|---|---|
1 | Marine | Leroy | mleroy@example.com | Paris | 3 |
On peut utiliser autant d'opérateurs logiques AND que l'on souhaite. On peut donc effectuer également ce genre de requête.
SELECT * FROM clients WHERE ville = 'Lyon' AND commandes >= 1;
Résultat
id | prenom | nom | ville | commandes | |
---|---|---|---|---|---|
2 | Jean | René | jrene@example.com | Lyon | 1 |
3 | Ted | Bundy | tbundy@example.com | Lyon | 2 |
OR
En SQL, l'opérateur logique OR
permet de conditionner l'affichage d'une requête en fonction de plusieurs conditions. Il s'utilise comme un OU. L'opérateur logique OR
ne peut être utilisé sans la commande WHERE
. Sans plus attendre, un exemple concret. Nous souhaitons rechercher dans la table, les clients qui n'ont pas commandé ou qui habitent dans la ville de Berlin.
SELECT * FROM clients WHERE ville = 'Berlin' OR commandes IS NULL;
Résultat
id | prenom | nom | ville | commandes | |
---|---|---|---|---|---|
4 | Paul | Bismuth | pbismuth@example.com | Paris | NULL |
5 | Caroline | Rodriguez | crodriguez@example.com | Berlin | 2 |
Tout comme l'opérateur AND
, on peut utiliser autant d'opérateurs logiques OR
que l'on souhaite, il n'y a pas de restrictions.
AND
et OR
En SQL, il est tout à fait enviseagable de construire des requêtes complexes qui combinent les opérateurs logiques AND
et OR
. En reprenant la table clients, imaginons que l'on souhaite obtenir les clients de Paris qui ont commandé, et les clients de Lyon qui ont commandé plus d'une fois.
SELECT * FROM clients WHERE (ville = 'Lyon' AND commandes > 1) OR (ville = 'Paris' AND commandes IS NOT NULL);
Résultat
id | prenom | nom | ville | commandes | |
---|---|---|---|---|---|
1 | Marine | Leroy | mleroy@example.com | Paris | 3 |
3 | Ted | Bundy | tbundy@example.com | Lyon | 2 |
L'utilisation des parenthèses peut se montrer très pertinente. Elles améliorent la lisibilité et la compréhension des requêtes, et par conséquent réduisent les erreurs.