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