SQL - Restriction

Décembre 2016

Expression des restrictions

Une restriction consiste à sélectionner les lignes satisfaisant à une condition logique effectuée sur leurs attributs. En SQL, les restrictions s'expriment à l'aide de la clause WHERE suivie d'une condition logique exprimée à l'aide d'opérateurs logiques

  • AND
  • OR
  • NOT


de comparateurs de chaîne :
  • IN
  • BETWEEN
  • LIKE


d'opérateurs arithmétiques :
  • +
  • -
  • /
  • %
  • &
  • |
  • ^
  • ~


et de comparateurs arithmétiques :
  • =
  • !=
  • >
  • <
  • >=
  • <=
  • <>
  • !>
  • !<

Restrictions simples

Soit la table suivante, présentant des voitures d'occasion :


Occaz

MarqueModeleSerieNumeroCompteur
Renault18RL4698 SJ 45123450
RenaultKangooRL4568 HD 1656000
RenaultKangooRL6576 VE 3812000
Peugeot106KID7845 ZS 8375600
Peugeot309chorus7647 ABY 82189500
FordEscortMatch8562 EV 23





Le champ présentant la valeur du kilométrage au compteur de la Ford
Escort
est délibérément non renseigné.

  • La sélection de toutes les voitures d'occasion ayant un kilométrage inférieur à 100 000 Km se fait par l'instruction :


SELECT * FROM OCCAZ
WHERE (Compteur < 100000)



Résultat

MarqueModeleSerieNumeroCompteur
RenaultKangooRL4568 HD 1656000
RenaultKangooRL6576 VE 3812000
Peugeot106KID7845 ZS 8375600



  • La sélection des colonnes Marque et Compteur des voitures ayant un kilométrage inférieur à 100 000 Km se fait par l'instruction :


SELECT Marque,Compteur FROM OCCAZ
WHERE (Compteur < 100000)



Résultat

MarqueCompteur
Renault56000
Renault12000
Peugeot75600



  • La sélection de toutes les voitures d'occasion ayant un kilométrage inférieur ou égal à 100 000 Km, et supérieur ou égal à 30000Km, se fait par l'instruction :


SELECT * FROM OCCAZ
WHERE (Compteur <= 100000) AND (Compteur >= 30000)



Résultat

MarqueModeleSerieNumeroCompteur
RenaultKangooRL4568 HD 1656000
Peugeot106KID7845 ZS 8375600




Restriction sur une comparaison de chaîne

Le prédicat LIKE permet de faire des comparaisons sur des chaines grâce
à des caractères, appelés caractères jokers :

  • Le caractère % permet de remplacer une séquence de caractères (éventuellement nulle)
  • La caractère _ permet de remplacer un caractère (l'équivalent du "blanc" au scrabble...)
  • Les caractères [-] permettent de définir un intervalle de caractères (par exemple [J-M])
  • La sélection des voitures dont la marque a un E en deuxième position se fait par l'instruction :


SELECT * FROM OCCAZ
WHERE Marque LIKE "_E%"




Résultat

MarqueModeleSerieNumeroCompteur
Renault18RL4698 SJ 45123450
RenaultKangooRL4568 HD 1656000
RenaultKangooRL6576 VE 3812000
Peugeot106KID7845 ZS 8375600
Peugeot309chorus7647 ABY 82189500







Suivant l'environnement ou vous utilisez ce prédicat, il sera peut-être nécessaire d'"échapper"
les guillemets avec un caractère d'échappement (généralement la barre oblique inverse "\").

Restriction sur un ensemble

Les prédicats BETWEEN et IN permettent de vérifier respectivement qu'une valeur se trouve dans un intervalle ou qu'une valeur appartient à une liste de valeurs :

  • La sélection de toutes les voitures d'occasion ayant un kilométrage inférieur ou égal à 100 000 Km, mais supérieur ou égal à 30000Km, (effectuée plus haut avec des comparateurs arithmétiques) peut se faire par l'instruction :


SELECT * FROM OCCAZ WHERE Compteur BETWEEN 100000 AND 30000



Résultat

MarqueModeleSerieNumeroCompteur
RenaultKangooRL4568 HD 1656000
Peugeot106KID7845 ZS 8375600



  • La sélection des voitures d'occasion dont la marque est Peugeot ou Ford se fait grâce à l'instruction :


SELECT * FROM OCCAZ
WHERE Marque IN ("Peugeot", "Ford")




Résultat

MarqueModeleSerieNumeroCompteur
Peugeot106KID7845 ZS 8375600
Peugeot309chorus7647 ABY 82189500
FordEscortMatch8562 EV 23




Restriction sur les valeurs manquantes

Lorsqu'un champ n'est pas renseigné, le SGBD lui attribue une valeur spéciale que l'on note NULL. La recherche de cette valeur ne peut pas se faire à l'aide des opérateurs standards, il faut utiliser les prédicats IS NULL ou bien IS NOT NULL.

  • La sélection de toutes les voitures d'occasion dont le kilométrage n'est pas renseigné se fait par l'instruction :


SELECT * FROM OCCAZ
WHERE Compteur IS NULL




Résultat

MarqueModeleSerieNumeroCompteur
FordEscortMatch8562 EV 23

A voir également :

Ce document intitulé «  SQL - Restriction  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.