SQLite Clause WHERE

La clauseWHEREde SQLite est utilisée pour spécifier des conditions de récupération de données dans une ou plusieurs tables.

Si la condition donnée est remplie, c'est-à-dire qu'elle est vraie, des valeurs spécifiques sont renvoyées par la table. Vous pouvez utiliser la clause WHERE pour filtrer les enregistrements et ne récupérer que les enregistrements dont vous avez besoin.

La clause WHERE peut être utilisée non seulement dans les instructions SELECT, mais aussi dans les instructions UPDATE et DELETE, etc. Nous les verrons dans les chapitres suivants.

Syntaxe

La syntaxe de base d'une instruction SELECT avec une clause WHERE dans SQLite est la suivante :

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

Exemples

Vous pouvez également utiliserdes opérateurs de comparaison ou logiquespour spécifier des conditions, telles que >, <, =, LIKE, NOT, etc. Supposons que la table COMPANY ait 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

L'exemple suivant montre l'utilisation des opérateurs logiques SQLite. L'instruction SELECT suivante liste tous les enregistrements où AGE est supérieur ou égal à 25andand SALARY 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 où AGE est supérieur ou égal à 25orand SALARY 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 liste tous les enregistrements où AGE n'est pas NULL. Les résultats affichent tous les enregistrements, ce qui signifie qu'aucun enregistrement 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 NAME commence par 'Ki', sans restriction sur les caractères 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 NAME commence par 'Ki', sans restriction sur les caractères 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 liste tous les enregistrements où la valeur de AGE est 25 ou 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 où la valeur de 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 liste tous les enregistrements où la valeur de 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. La sous-requête trouve tous les enregistrements avec le champ AGE où SALARY > 65000. La clause WHERE suivante est utilisée avec l'opérateur EXISTS pour lister tous les enregistrements où l'AGE de la requête externe existe dans les résultats renvoyés 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. La sous-requête trouve tous les enregistrements avec le champ AGE où SALARY > 65000. La clause WHERE suivante est utilisée avec l'opérateur > pour lister tous les enregistrements où l'AGE de la requête externe est supérieur à l'âge dans les résultats renvoyés 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
Autres extensions