SQLite - Clause WHERE

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

Si la condition donnée est satisfaite, signifie vrai, alors elle renvoie la valeur spécifique de la table. Vous devrez utiliser la clause WHERE pour filtrer les enregistrements et récupérer uniquement les enregistrements nécessaires.

La clause WHERE est non seulement utilisée dans l'instruction SELECT, mais elle est également utilisée dans l'instruction UPDATE, DELETE, etc., qui sera traitée 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 la comparaison ou des opérateurs logiques tels que>, <, =, LIKE, NOT, etc. Considérez 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 illustrant l'utilisation des opérateurs logiques SQLite. L'instruction SELECT suivante répertorie tous les enregistrements où AGE est supérieur ou égal à 25AND 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 où AGE est supérieur ou égal à 25 OR 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, ce qui signifie tous les enregistrements car aucun de l'enregistrement n'a 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 répertorie tous les enregistrements où NAME 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 répertorie tous les enregistrements où NAME 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 où la valeur 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 répertorie tous les enregistrements où 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 où 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 la sous-requête SQL, où la sous-requête trouve tous les enregistrements avec le champ AGE ayant SALARY> 65000 et les versions ultérieures La clause WHERE est utilisée avec l'opérateur EXISTS pour répertorier tous les enregistrements où 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 la sous-requête SQL où la sous-requête trouve tous les enregistrements avec le champ AGE ayant SALARY> 65000 et les versions ultérieures La clause WHERE est utilisée avec l'opérateur> pour répertorier tous les enregistrements où AGE de la requête externe est supérieur que l'âge du 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