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

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])
  • 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

    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 "\").

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.

  • 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

    Marque Modele Serie Numero Compteur
    Ford Escort Match 8562 EV 23  



Dernière modification le mardi 14 octobre 2008 à 17:40:30.Ce document intitulé « SQL - Restriction » issu de Comment Ça Marche (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.
Meilleures réponses pour « SQL Restriction » dans :
Le langage SQL Voir Qu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
Sauvegarde automatique d'une BDD sous SQL EXPRESS 2005 VoirSi vous vous voulez automatiser une sauvegarde d'une base de données sous SQL server express, il existe une solution simple grâce à un fichier .bat. Créez un nouveau fichier texte. Ce fichier doit contenir les informations suivantes: SET...
Télécharger MS SQL Migrate VoirPour des raisons pratique ou quasiment professionnel, il est nécessaire de convertir des bases de données entre différents formats. Le principal, c’est qu’il n’y ait aucune perte de donnée lors de la conversion. MS SQL Migrate est...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
PL/SQL - Introduction au langage PL/SQL VoirIntroduction au langage PL/SQL Le langage PL/SQL est un langage L4G (entendez par ce terme un langage de quatrième génération), fournissant une interface procédurale au SGBD Oracle. Le langage PL/SQL intègre parfaitement le langage SQL en lui...