La clause WHERE est utilisée pour filtrer les enregistrements.
Récupérer uniquement les données souhaitées implique de spécifier des critères de recherche, également appelés condition de filtre. Dans une instruction SELECT, les données sont filtrées en spécifiant des critères de recherche dans la clause WHERE.
Syntaxe:
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE condition;
La clause WHERE n’est pas seulement utilisée dans l’instruction SELECT, elle est également utilisée dans l’instruction UPDATE, DELETE.
Base de données DB2 :
Vous trouverez ci-dessous une sélection de la table “Product” de la base de données DB2.
ID-Produit | Nom-Produit | Categorie | Prix | Stock | Valeur-Totale |
---|---|---|---|---|---|
7001 | Souris | Accessoires | 75,00 | ||
7002 | Disque dur | 65,00 | 20 | 1 300 | |
7003 | Clavier | Accessoires | 36.00 | 33 | 1 118,00 |
7004 | RAM | Composants | 23.50 | 16 | 376,00 |
7005 | Roue | vélos | 1 200 | ||
7006 | STYLO | 7.45 | 10 | 74,50 | |
7007 | Lecteur CD | Accessoires | 75,00 | ||
7008 | Micro | Accessoires | 75,00 |
Exemple:
L’instruction SQL ci-dessous récupère deux colonnes de la table “Product”, mais au lieu de renvoyer toutes les lignes, seules les lignes avec une valeur SRP de 75,00 sont renvoyées.
SELECT
ID-Produit, Nom-Produit
FROM Produit
WHERE Prix = 75.00;
Résultat:
ID-Produit | Nom-Produit |
---|---|
7001 | Souris |
7007 | Lecteur CD |
7008 | Micro |
Champs numériques vs champs de texte
SQL requiert des guillemets simples autour des valeurs de texte (la plupart des systèmes de base de données autorisent également les guillemets doubles). Cependant, les champs numériques ne doivent pas être entourés de guillemets.
SELECT ID-Produit, Nom-Produit, Prix
FROM Produit
WHERE Categorie= 'Accessories';
Résultat:
ID-Produit | Nom-Produit | Prix |
---|---|---|
7001 | Souris | 75,00 |
7003 | Clavier | 36.00 |
7007 | Lecteur CD | 75,00 |
7008 | Micro | 75,00 |
Opérateurs de la clause WHERE :
SQL prend en charge toute une gamme d’opérateurs conditionnels dans la clause WHERE, comme indiqué.
Opérateur | La description |
---|---|
= | Égalité |
<> | Non-égalité (diffèrent) |
!= | Non-égalité (diffèrent) |
< | Inférieur à |
<= | Inférieur ou égal à |
!< | Pas moins que |
> | Supérieur à |
>= | Supérieur ou égal à |
!> | Pas plus grand que |
BETWEEN | Entre deux valeurs spécifiées, y compris les valeurs de début et de fin spécifiées |
IS NULL | Est une valeur NULL |
Exemple 1:
Pour répertorier tous les produits qui coûtent moins de 10 €
SELECT ID-Produit, Nom-Produit
FROM Produit
WHERE Prix < 10 ;
Résultat:
ID-Produit | Nom-Produit |
---|---|
7006 | STYLO |
Exemple 2 :
Pour répertorier tous les produits de la catégorie autres que “Accessoires”
SELECT ID-Produit, Nom-Produit, Prix
FROM Produit
WHERE Categorie <> 'Accessoires' ;
Résultat:
ID-Produit | Nom-Produit | Prix |
---|---|---|
7002 | Disque dur | 65,00 |
7004 | RAM | 23.50 |
7005 | Roue | 1 200 |
7006 | STYLO | 7.45 |
Exemple 3 :
Pour récupérer tous les produits dont le prix est compris entre 5 € et 10 €, y compris les valeurs de début et de fin spécifiées.
SELECT ID-Produit, Nom-Produit
FROM Produit
WHERE Prix BETWEEN 5 AND 25;
Résultat:
ID-Produit | Nom-Produit |
---|---|
7004 | RAM |
7006 | STYLO |
Exemple 4 :
Pour renvoyer une liste de tous les produits qui n’ont pas de catégorie (c’est-à-dire une valeur nulle)
SELECT ID-Produit, Nom-Produit, Prix
FROM Produit
WHERE Categorie IS NULL;
Résultat:
ID-Produit | Nom-Produit | Prix |
---|---|---|
7002 | Disque dur | 65,00 |
7006 | STYLO | 7.45 |