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
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é.
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 |
SELECT Marque,Compteur FROM OCCAZ WHERE (Compteur < 100000)
Résultat
| Marque | Compteur |
| Renault | 56000 |
| Renault | 12000 |
| Peugeot | 75600 |
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:
SELECT * FROM OCCAZ WHERE Marque LIKE "_E%"
Résultat
| 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 |
|
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:
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 |
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.
SELECT * FROM OCCAZ WHERE Compteur IS NULL
Résultat
| Marque | Modele | Serie | Numero | Compteur |
| Ford | Escort | Match | 8562 EV 23 |