English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
Ecco la sintassi di base per la dichiarazione SELECT di SQLite con il sottoinsieme WHERE.
SELECT column1, column2, columnN FROM table_name WHERE [condition]
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