SQL - Restrictions
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
de comparateurs de chaîne :
d'opérateurs arithmétiques :
et de comparateurs arithmétiques :
Restrictions simples
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 |
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])
|
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
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 |
|
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.
Discussions pertinentes trouvées dans le forum