Opérateurs SQL AND, OR et NOT

Pour un meilleur contrôle des filtres, DB2 SQL vous permet de spécifier plusieurs clauses WHERE.

Opérateur : un mot-clé spécial utilisé pour joindre ou modifier des clauses dans une clause WHERE. Ceci est également connu sous le nom d’opérateurs logiques.

Les opérateurs AND (et) et OR (ou) sont utilisés pour filtrer les enregistrements en fonction de plusieurs conditions.

  1. L’opérateur AND affiche un enregistrement si toutes les conditions séparées par AND sont TRUE (VRAIE).
  2. L’opérateur OR affiche un enregistrement si l’une des conditions séparées par OR est TRUE (VRAIE).

L’opérateur NOT affiche un enregistrement si la ou les conditions sont NOT TRUE (FAUX).

Syntaxe:

SELECT colonne1, colonne2, ... 
  FROM nom_table 
 WHERE condition1 AND/OR condition2 AND/OR condition3 ...;

Base de données DB2 :

Vous trouverez ci-dessous une sélection de la table “Product” de la base de données DB2.

ID-ProduitNom -ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005Rouevélos1 200
7006Stylo7.451074,50
7007Tapis de sourisAccessoires5,00

Exemple 1 : Utilisation de l’opérateur AND :

Pour filtrer sur plusieurs colonnes, nous utilisons l’opérateur AND pour ajouter des conditions à notre clause WHERE. Il s’agit d’un mot clé utilisé dans une clause WHERE pour spécifier que seules les lignes correspondant à toutes les conditions spécifiées doivent être extraites. “AND” indique au DB2 de renvoyer uniquement les lignes qui remplissent toutes les conditions spécifiées.

SELECT ID-Produit, Nom-Produit, Prix 
  FROM Produit 
 WHERE Categorie = 'Accessoires' AND Prix > 10 ;

Cette instruction SQL récupère les ProductId, ProductName et Price pour tous les produits de la catégorie ‘Accessoires’ et le prix est supérieur à 10.

La clause WHERE de cette instruction SELECT est composée de deux conditions et le mot-clé AND est utilisé pour les joindre.

Résultat:
ID-ProduitNom du produitPrix
7001Souris75,00
7003Clavier36.00

Exemple 2 : Utilisation de l’opérateur OR

L’opérateur OR est exactement le contraire de AND.

L’opérateur OR demande au DB2 d’extraire les lignes qui correspondent à une condition ou aux deux.

SELECT Produit, Nom-Produit, Prix 
  FROM Produit 
 WHERE Categorie = 'Accessoires' OR Prix > 10 ;

Cette instruction SQL récupère ProductId, ProductName et Price pour tous les produits de Category = ‘Accessories’ ou Price > 10

Résultat:
ID-ProduitNom-ProduitPrix
7001Souris75,00
7003Clavier36.00
7007Tapis de souris5,00

Ordre d’évaluation :

Les clauses WHERE peuvent contenir n’importe quel nombre d’opérateurs AND et OR.

SQL traite les opérateurs AND avant les opérateurs OR.

Exemple 3 :

Pour obtenir une liste de tous les ID-Produit pour la catégorie ‘Accessoires’ et ‘Composants’ avec un prix de 10 ou plus.

SELECT ID-Produit
    FROM Produit
    WHERE (Categorie = 'Accessories' OR Categorie = 'Composants') AND Prix >= 10;

Si vous n’utilisez pas de parenthèses, vous n’obtiendrez pas la sortie souhaitée.

Chaque fois que vous écrivez des clauses WHERE qui utilisent à la fois les opérateurs AND et OR, utilisez des parenthèses pour regrouper explicitement les opérateurs.

Résultat:
ID-Produit
7001
7003
7004

Exemple 4 : Utilisation de l’opérateur NOT

L’instruction SQL suivante sélectionne tous les champs de “Produit” où Catégorie n’est PAS “Accessoires”.

SELECT * FROM Produit
 WHERE NOT Categorie = 'Accessoires';
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7002Disque dur65,00201 300
7004RAMComposants23.5016376,00
7005Rouevélos1 200
7006Stylo7.451074,50