Clause WHERE

20 min Niveau 5

La clause WHERE de SQLite est utilisée pour spécifier une condition lors de la récupération des données d'une ou plusieurs tables.

Si la condition donnée est satisfaite, c'est-à-dire vraie, elle renvoie la valeur spécifique de la table. Vous devrez utiliser la clause WHERE pour filtrer les enregistrements et ne récupérer que les enregistrements nécessaires.

La clause WHERE n'est pas seulement utilisée dans l'instruction SELECT, mais aussi dans les instructions UPDATE, DELETE, etc., qui seront abordées dans les chapitres suivants.

Syntaxe

Voici la syntaxe de base de l'instruction SQLite SELECT avec la clause WHERE.

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition]

Exemple

Vous pouvez spécifier une condition en utilisant des opérateurs logiques ou de comparaison tels que >, <, =, LIKE, NOT, etc. Considérons la table COMPANY avec les enregistrements suivants -

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Voici un exemple simple de l'utilisation des opérateurs logiques de SQLite. L'instruction SELECT suivante liste tous les enregistrements pour lesquels AGE est supérieur ou égal à 25 ET le salaire est supérieur ou égal à 65000.00.

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

L'instruction SELECT suivante répertorie tous les enregistrements pour lesquels AGE est supérieur ou égal à 25 OU le salaire est supérieur ou égal à 65000.00.

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

L'instruction SELECT suivante répertorie tous les enregistrements où AGE n'est pas NULL, c'est-à-dire tous les enregistrements car aucun d'entre eux n'a un AGE égal à NULL.

sqlite>  SELECT * FROM COMPANY WHERE AGE IS NOT NULL;

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

L'instruction SELECT suivante liste tous les enregistrements dont le NOM commence par "Ki", peu importe ce qui vient après "Ki".

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

L'instruction SELECT suivante liste tous les enregistrements dont le NOM commence par "Ki", peu importe ce qui vient après "Ki".

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

L'instruction SELECT suivante répertorie tous les enregistrements pour lesquels la valeur AGE est soit 25, soit 27.

sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

L'instruction SELECT suivante liste tous les enregistrements pour lesquels la valeur AGE n'est ni 25 ni 27.

sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

L'instruction SELECT suivante répertorie tous les enregistrements dont la valeur AGE est comprise entre 25 et 27.

sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

L'instruction SELECT suivante utilise une sous-requête SQL, où la sous-requête trouve tous les enregistrements dont le champ AGE a un SALAIRE > 65000, puis la clause WHERE est utilisée avec l'opérateur EXISTS pour répertorier tous les enregistrements où le champ AGE de la requête externe existe dans le résultat renvoyé par la sous-requête.

sqlite> SELECT AGE FROM COMPANY 
    WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

AGE
----------
32
25
23
25
27
22
24

L'instruction SELECT suivante utilise une sous-requête SQL dans laquelle la sous-requête trouve tous les enregistrements dont le champ AGE a un SALAIRE > 65000, puis la clause WHERE est utilisée avec l'opérateur > pour répertorier tous les enregistrements dont l'AGE de la requête externe est supérieur à l'âge dans le résultat renvoyé par la sous-requête.

sqlite> SELECT * FROM COMPANY 
    WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
logo discord

Besoin d'aide ?

Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !

En savoir plus