English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Frase WHERE di SQLite

SQLite WHERELa clausola WHERE viene utilizzata per specificare le condizioni di selezione dei dati da una o più tabelle.

Se una condizione data è soddisfatta, ossia true, allora il valore specifico verrà restituito dalla tabella. Dovrai utilizzare la clausola WHERE per filtrare i record e estrarre solo i record necessari.

La clausola WHERE non viene utilizzata solo nelle dichiarazioni SELECT, ma anche nelle dichiarazioni UPDATE, DELETE e così via, che verranno introdotte nei capitoli successivi.

Sintassi

Ecco la sintassi di base per la dichiarazione SELECT di SQLite con il sottoinsieme WHERE.

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

Esempi online

Puoi usareOperatori di confronto o logici (Ad esempio >, <, =, LIKE, NOT e così via) specificano le condizioni. Ecco una tabella COMPANY con i seguenti record-

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

Ecco un esempio semplice dell'uso degli operatori logici di SQLite. La seguente dichiarazione SELECT elenca tutti i record con AGE (età) maggiore o uguale a 25 e SALARY (stipendio) maggiore o uguale a 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

La seguente dichiarazione SELECT elenca AGE (età) maggiore o uguale a 25 O Tutti i record con SALARY (stipendio) maggiore o uguale a 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

Immediatamente dopo la dichiarazione SELECT, vengono elencati tutti i record con l'AGE (età) non NULL, il che significa che vengono visualizzati tutti i record perché non esiste un record con l'AGE uguale a 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

La seguente dichiarazione SELECT elenca tutti i record con il nome che inizia con 'Ki', indipendentemente da qualsiasi record successivo.

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6                       Kim                      22                       South-Hall           45000.0

La seguente dichiarazione SELECT elenca tutti i record con il nome che inizia con 'Ki', indipendentemente dai record successivi.

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6                       Kim                      22                       South-Hall           45000.0

Dopo la dichiarazione SELECT, vengono elencati tutti i record con il valore AGE (età) di 25 o 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

以下SELECT语句列出了AGE(年龄)值既不是25也不是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

在SELECT语句之后,列出了AGE(年龄)值在25和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

以下SELECT语句使用SQL子查询,其中子查询查找AGE(年龄)字段的SALARY > 65000的所有记录,随后WHERE子句与EXISTS运算符一起使用,以列出外部查询存在AGE的所有记录在子查询返回的结果中-

sqlite> SELECT AGE FROM COMPANY 
   WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
AGE
----------
32
25
23
25
27
22
24

以下SELECT语句使用SQL子查询,其中子查询查找SALARY > 65000的所有记录的AGE字段,以及与>运算符一起使用的WHERE子句列出外部查询的AGE大于子查询返回结果中的AGE的所有记录。

sqlite> SELECT * FROM COMPANY 
   WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0