Restriction (WHERE)

Informations[1]

Objectif

  • Savoir filtrer les résultats d'une requête de sélection selon un ou plusieurs critères.

Mise en situation

SQL permet de récupérer tous les enregistrements d'une table qui répondent à une ou plusieurs conditions, comme l'égalité d'un attribut avec une constante.

Mais il y a des cas où ces conditions sont plus subtiles. Dans une table qui stocke des articles et leurs prix, il pourrait être utile de récupérer les articles dans une certaine tranche de prix, entre 5 et 10 € par exemple.

Dans cette même table, pour récupérer tous les écrans d'ordinateurs, on voudrait pouvoir faire une recherche approximative sur le nom des articles, pour récupérer tous ceux qui contiennent le mot « écran ».

SQL fournit des opérateurs permettant de réaliser ces comparaisons plus fines.

DéfinitionRestriction

Une restriction est un type de sélection où l'on se restreint à des enregistrements dont les attributs vérifient une ou plusieurs conditions.

SyntaxeClause WHERE

1
SELECT *
2
FROM R
3
WHERE <condition>

Exemple

Exemple de restriction (SQL et Algèbre)

Ici on se restreint à des enregistrements de la table R1 dont l'attribut « C » est inférieur strictement à 20.

Introduction

La clause WHERE d'une instruction de sélection est définie par une condition. Une telle condition s'exprime à l'aide d'opérateurs de comparaison et d'opérateurs logiques. Le résultat d'une expression de condition est toujours un booléen.

DéfinitionCondition

1
Condition Elémentaire ::= Attribut <Opérateur de comparaison> Constante
2
Condition ::= Condition <Opérateur logique> Condition | Condition Elémentaire 

SyntaxeOpérateurs de comparaison

Les opérateurs de comparaison sont, avec attribut A et constante C :

  • A = C

  • A <> C (différence)

  • A < C

  • A > C

  • A <= C

  • A >= C

  • P BETWEEN C1 AND C2

  • P IN (C1, C2, ...)

  • P LIKE 'chaîne'

  • P IS NULL

SyntaxeOpérateurs logiques

Les opérateurs logiques sont :

  • OR

  • AND

  • NOT

RemarqueOpérateur LIKE

L'opérateur LIKE 'chaîne' permet d'insérer des jokers dans l'opération de comparaison (alors que l'opérateur = teste une égalité stricte) :

  • Le joker % désigne 0 ou plusieurs caractères quelconques.

  • Le joker _ désigne 1 et 1 seul caractère.

On préférera l'opérateur = à l'opérateur LIKE lorsque la comparaison n'utilise pas de joker.