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
de comparateurs de chaîne:
d'opérateurs arithmétiques:
et de comparateurs arithmétiques:
Soit la table suivante, présentant des voitures d'occasion:
Occaz
Marque |
Modele |
Serie |
Numero |
Compteur |
Renault |
18 |
RL |
4698 SJ 45 |
123450 |
Renault |
Kangoo |
RL |
4568 HD 16 |
56000 |
Renault |
Kangoo |
RL |
6576 VE 38 |
12000 |
Peugeot |
106 |
KID |
7845 ZS 83 |
75600 |
Peugeot |
309 |
chorus |
7647 ABY 82 |
189500 |
Ford |
Escort |
Match |
8562 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
Marque |
Modele |
Serie |
Numero |
Compteur |
Renault |
Kangoo |
RL |
4568 HD 16 |
56000 |
Renault |
Kangoo |
RL |
6576 VE 38 |
12000 |
Peugeot |
106 |
KID |
7845 ZS 83 |
75600 |
- 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
Marque |
Compteur |
Renault |
56000 |
Renault |
12000 |
Peugeot |
75600 |
- 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
Marque |
Modele |
Serie |
Numero |
Compteur |
Renault |
Kangoo |
RL |
4568 HD 16 |
56000 |
Peugeot |
106 |
KID |
7845 ZS 83 |
75600 |
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])
|
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 "\").
|
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
Marque |
Modele |
Serie |
Numero |
Compteur |
Renault |
Kangoo |
RL |
4568 HD 16 |
56000 |
Peugeot |
106 |
KID |
7845 ZS 83 |
75600 |
- 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
Marque |
Modele |
Serie |
Numero |
Compteur |
Peugeot |
106 |
KID |
7845 ZS 83 |
75600 |
Peugeot |
309 |
chorus |
7647 ABY 82 |
189500 |
Ford |
Escort |
Match |
8562 EV 23 |
|
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.
|