Initiation à SQL

Sélection de lignes

Pour préciser la ou les conditions que les lignes doivent respecter pour être sélectionnées dans la table, faites suivre l'instruction SELECT de la clause WHERE. Un critère de sélection de lignes dans une table est appelé condition de recherche.

Une condition de recherche se compose d'un ou de plusieurs prédicats. Un prédicat demande que la ligne respecte une condition vraie ou fausse (ou encore inconnue). Les prédicats de base suivants peuvent être utilisés dans une clause WHERE pour préciser les conditions à respecter :
Prédicat Fonction
x = y x est égal à y
x <> y x est différent de y
x < y x est inférieur à y
x > y x est supérieur à y
x <= y x est inférieur ou égal à y
x >= y x est supérieur ou égal à y
IS NULL/IS NOT NULL Recherche les valeurs NULL

Lorsque vous élaborez les conditions de recherche, veillez à ne demander des opérations arithmétiques que sur les données de type numérique et à ne comparer que des données de types compatibles. Par exemple, il est impossible de comparer des chaînes de texte à des nombres.

Si vous sélectionnez des lignes en fonction d'une valeur alphanumérique, pensez à placer cette dernière entre apostrophes (par exemple, WHERE JOB = 'Clerk') et à la taper telle qu'elle existe dans la base de données. Si la valeur est en minuscules dans la base de données et que vous la tapez en majuscules, aucune ligne n'est sélectionnée. Si vous sélectionnez des lignes en fonction d'une valeur numérique, ne mettez-pas celle-ci entre apostrophes (par exemple, WHERE DEPT = 20).

L'exemple suivant ne sélectionne, dans la table STAFF, que les lignes portant le numéro de service 20 :

     SELECT DEPT, NAME, JOB
        FROM STAFF
        WHERE DEPT = 20

Cette instruction donne le résultat suivant :

     DEPT   NAME      JOB  
      ------ --------- -----
          20 Sanders   Mgr
          20 Pernal    Sales
          20 James     Clerk
          20 Sneider   Clerk

L'exemple suivant utilise une fonction AND pour préciser plusieurs conditions. Il est possible de préciser autant de conditions que nécessaire. L'exemple sélectionne, dans la table STAFF, les employés de production (Clerk) du service 20 :

   
     SELECT DEPT, NAME, JOB
        FROM STAFF
        WHERE JOB = 'Clerk'
        AND DEPT = 20

Cette instruction donne le résultat suivant :

     DEPT   NAME      JOB  
     ------ --------- -----
         20 James     Clerk
         20 Sneider   Clerk
 

Si la colonne n'a pas de valeur par défaut et si vous ne précisez aucune valeur, elle prend la valeur NULL. C'est également le cas si vous avez spécifiquement demandé la valeur NULL. Les colonnes n'acceptent la valeur NULL que si leur définition le prévoit. La définition et la prise en charge des valeurs NULL sont abordées dans la section Création de tables.

Pour rechercher une valeur NULL, utilisez les prédicats IS NULL et IS NOT NULL.

L'instruction suivante établit la liste des employés dont la commission est inconnue :

     
     SELECT ID, NAME
        FROM STAFF
        WHERE COMM IS NULL

Cette instruction donne le résultat suivant :

     ID     NAME     
     ------ ---------
         10 Sanders  
         30 Marenghi 
         50 Hanes    
        100 Plotz    
        140 Fraye    
        160 Molinare 
        210 Lu       
        240 Daniels  
        260 Jones    
        270 Lea      
        290 Quill    
        

La valeur zéro n'est pas identique à la valeur NULL. L'instruction suivante sélectionne tous les employés de la table dont la commission est égale à zéro :

     
     SELECT ID, NAME
        FROM STAFF
        WHERE COMM = 0
     

Comme il n'y a pas de valeur égale à zéro dans la colonne COMM du modèle de table, le résultat est vide.

L'exemple suivant sélectionne toutes les lignes de la table STAFF où la colonne YEARS a une valeur supérieure à 9 :

     SELECT NAME, SALARY, YEARS
        FROM STAFF
        WHERE YEARS > 9
     

Cette instruction donne le résultat suivant :

     NAME      SALARY    YEARS 
     --------- --------- ------
     Hanes      20659.80     10
     Lu         20010.00     10
     Jones      21234.00     12
     Quill      19818.00     10
     Graham     21000.00     13


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]