Temps de lecture approximative : 8 minutes
AND et ORNous 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 |
ANDEn 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 |
OREn 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 OREn 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.