La Clause SQL WHERE

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-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005Rouevélos1 200
7006STYLO7.451074,50
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,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-ProduitNom-Produit
7001Souris
7007Lecteur CD
7008Micro

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-ProduitNom-ProduitPrix
7001Souris75,00
7003Clavier36.00
7007Lecteur CD75,00
7008Micro75,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érateurLa 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
BETWEENEntre deux valeurs spécifiées, y compris les valeurs de début et de fin spécifiées
IS NULLEst 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-ProduitNom-Produit
7006STYLO

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-ProduitNom-ProduitPrix
7002Disque dur65,00
7004RAM23.50
7005Roue1 200
7006STYLO7.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-ProduitNom-Produit
7004RAM
7006STYLO

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-ProduitNom-ProduitPrix
7002Disque dur65,00
7006STYLO7.45