La rédaction de conditions avec WHERE

1.1 L’expression conditionnelle

SQL détermine sur quelles lignes sera effectuée une opération par le moyen d’une expression conditionnelle, dans la clause WHERE. À chaque ligne de la table, l’expression conditionnelle est ré-évaluée en fonction des valeurs spécifiques à la ligne. Si l’expression s’évalue à VRAI, alors l’opération demandée (SELECT, DELETE, UPDATE) sera effectuée sur la ligne. Si l’expression s’évalue à FAUX, alors la ligne est rejetée et l’opération ne sera pas effectuée.

L’expression conditionnnelle se rédige comme une liste de conditions, séparées par un opérateur logique. Il y a deux opérateurs logiques le AND (et) et le OR (ou).

condition { AND | OR } condition ...

Une condition est une expression de comparaison qui, elle aussi, s’évalue à VRAI ou FAUX selon les valeurs de la ligne concernée. L’application des opérateurs logiques sur le résultat individuel des conditions donne un seul résultat pour l’ensemble de l’expression conditionnelle. Le AND exige que les deux conditions soient VRAI pour que le résultat soit VRAI ; le OR ne demande qu’une seule condition VRAI pour que le résultat soit VRAI.

TRUE and TRUE donne TRUE
TRUE and FALSE donne FALSE
FALSE and FALSE donne FALSE
TRUE or TRUE donne TRUE
TRUE or FALSE donne TRUE
FALSE or FALSE donne FALSE

Remarque:

  • L’expression conditionnelle peut se composer que d’une seule condition. Il n’y a alors pas d’opérateur logique.
  • Lorsque plusieurs conditions sont unies par un mélange de ANDs et de ORs, il est préférable d’utiliser des parenthèses afin de clarifier ce qui est demandé.
WHERE (condition 1 AND condition2)
OR (condition3 AND condition4)

1.2 La condition

Une condition individuelle se rédige de la façon suivante:

expression opérateur expression

Une expression peut être l’une des choses suivantes :

  • une colonne ex. : la colonne NOM de la table employe
  • une valeur du texte (ex. : ‘allo’) ou un nombre (ex. : 3456)
  • une liste de valeurs ce qui nécessite l’utilisation de parenthèses et de virgules, ex. : (23, 45, 48, 234, 345)
  • une fonction les SGBD offrent un jeu de fonctions qui peuvent être
    appliquées sur des colonnes, ex. : UPPER(nom)
  • une expression mathématique quantite * cout / 34
  • une sous-requête Cet élément est présenté à un point subséquent dans le présent document.

Remarque:

  • Le nombre d’items inclus dans une liste de valeurs est limité selon le SGBD.
  • Les fonctions disponibles varient selon les SGBD.
    
  • Une expression mathématique qui contient un NULL donne toujours NULL comme résultat.

1.3 Les opérateurs

Les opérateurs pouvant être utilisés dans une condition sont nombreux. D’abord, les opérateurs de comparaison connus de la mathématique sont acceptés.

  • = égal
  • < plus petit que
  • > plus grand que
  • <= plus petit ou égal à
  • >= plus grand ou égal à
  • <> différent de

Mais en plus, certains opérateurs plus particuliers sont aussi utilisés. À noter, qu’il est toujours possible d’utiliser un format négatif (avec NOT) de tous les opérateurs de comparaison.

  • IN pour des ensembles de valeurs
  • BETWEEN pour des intervalles de valeurs
  • LIKE pour des sous-chaînes de caractères
  • IS pour des NULLs

1.3.1 L’opérateur IN

Si vous désirez comparer une colonne à une liste de valeurs, il est nécessaire d’utiliser l’opérateur IN.

WHERE colonne [NOT] IN (liste de valeurs)

Celui-ci permet de comparer la colonne avec une liste de valeurs. Si la colonne est égale à une des valeurs mentionnées dans la liste, alors la condition est respectée. En utilisant la négation (NOT), la condition est considérée respectée si la colonne n’est égale à aucune des valeurs de la liste.

Trouvez les projets dirigés par les employés dont le matricule est 104, 108 ou 111.
SELECT code_projet
FROM projet
WHERE matricule IN (104, 108, 111);

1.3.2 L’opérateur BETWEEN

Quelquefois, on désire rechercher des valeurs situées entre les bornes d’un intervalle. Deux conditions unies par AND sont alors nécessaires pour établir la borne inférieure et la borne supérieure de l’intervalle.

Quels sont les projets qui ont débuté entre le 1er janvier 1989 et le 15 mars 1991?
SELECT code_projet
FROM projet
WHERE date_debut >= ‘1989-01-01’
AND date_debut <= ‘1991-03-15’;

Note: La façon de présenter le format d’une date est propre à chaque SGBD

On peut utiliser l’opérateur BETWEEN pour établir les bornes à l’aide d’une seule condition plutôt que deux.

WHERE colonne [NOT] BETWEEN borne1 AND borne2

La même requête que ci-dessus peut alors se rédiger ainsi:

SELECT code_projet
FROM projet
WHERE date_debut BETWEEN ‘1989-01-01’ AND ‘1991-03-15’;

Remarque:

BETWEEN considère que les bornes sont incluses dans l’intervalle.

1.3.3 L’opérateur LIKE

Lorsqu’on désire poser une condition sur le contenu alphanumérique d’une colonne, on utilise l’opérateur LIKE.

WHERE colonne [NOT] LIKE ‘valeur’

Dans la ‘valeur’  le symbole ‘_’ remplace exactement un caractère ou un espace; le symbole ‘%’ remplace une suite arbitraire de caractères (incluant aucun).

Quels sont les produits dont la classe débute par la lettre Z?
SELECT *
FROM produit
WHERE classe LIKE ‘Z%’;

1.3.4 L’opérateur IS

Si on désire vérifier qu’une colonne contient, ou non, le terme NULL, on doit obligatoirement utiliser l’opérateur IS plutôt que « = « . Toute comparaison faite avec un NULL et impliquant un opérateur de comparaison habituel donne FAUX comme évaluation.

colonne IS [ NOT ] NULL

En effet, la condition suivante ne peut être vérifiée:

WHERE colonne = NULL donne FAUX

vous devez utiliser

WHERE colonne IS NULL donne VRAI

 

 

Print Friendly, PDF & Email

Laisser un commentaire