SQLite Where 子句
SQLite的 WHERE 子句用於指定從一個表或多個表中取得資料的條件。
如果滿足給定的條件,即為真(true)時,則從表中傳回特定的值。您可以使用 WHERE 子句來篩選記錄,只取得所需的記錄。
WHERE 子句不僅可用在 SELECT 語句中,它也可用在 UPDATE、DELETE 語句中,等等,這些我們將在隨後的章節中學習。
語法
SQLite 的帶有WHERE 子句的SELECT 語句的基本語法如下:
SELECT column1, column2, columnN FROM table_name WHERE [condition]
實例
您也可以使用比較或邏輯運算子指定條件,例如>、<、=、LIKE、NOT,等等。假設COMPANY 表有以下記錄:
ID NAME AGE ---- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 27 Texas 85000.0
6 00.0
7 James 24 Houston 01或
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 27 Texas 85000.0
6 00.0
7 James 24 Houston 01
下面的實例示範了 SQLite 邏輯運算子的用法。下面的SELECT 語句列出了AGE 大於等於25 且工資大於等於65000.00 的所有記錄:
sqlite> SELECT * FROM COMPANY WHER AGE > ;= 65000;
ID NAME AGE ADDRESS ----- ----------
4 Mark 25 27 Texas 85000.0
「下列的SELECT 語句列出了AGE大於等於25 ID NAME AGE ADDRESS ----- ----------
4 Mark 25 27 Texas 85000.0
薪資大於等於65000.00 的所有記錄:
sqlite> SELECT * FROM COMPANY WHERE AGE >= 250OR COMPANY WHERE AGE >= 250OR COMPANY WHERE AGE >= 250000SALARYRY. NAME AGE ADDRESS SALARY##-#---------- ---------- ---------- ---------- -------1 Paul 32 N 25 Texas 15000.0
4 65000.0
5 David 27 )00
5 David 27 )00
下面的SELECT 語句列出了AGE 不為NULL 的所有記錄,結果顯示所有的記錄,表示沒有一個記錄的AGE 等於NULL:
sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
ID NAME AGE ------ ----------
1 Paul 32 25 Texas 15000.0
#3 20000.0
4 Mark 25
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
下面的SELECT 語句列出了NAME 以'Ki' 開始的所有記錄, 'Ki' 之後的字元不做限制:
ID NAME AGE ------ ----------
1 Paul 32 25 Texas 15000.0
#3 20000.0
4 Mark 25
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
下面的SELECT 語句列出了NAME 以'Ki' 開始的所有記錄,'Ki' 之後的字元不做限制:
sqlite> SELECT * FROM COMPANY WHERE NAME) %';
ID NAME AGE ADDRESS ---- ----------
6 Kim 22 South-Hall 45000.0
ID NAME AGE ADDRESS ---- ----------
6 Kim 22 South-Hall 45000.0
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
下面的SELECT 陳述式列出了AGE 的值為25 或27 的所有記錄:ID ADDRESS SALARY
------ ---- ---------- ---------- ---------- ----------
6 Kim 22 South-Hall 45000.0
------ ---- ---------- ---------- ---------- ----------
6 Kim 22 South-Hall 45000.0
sqlite> SELECT * FROM COMPANY W##sqlite> SELECT * FROM COMPANY W##sqlite&AGE 25, 27 );
ID NAME AGE ------ ----------
2 Allen 25 25 Rich-Mond 65000.0
5 85000.0
#sqlite> SELECT * FROM COMPANY WHERE AGE BETWE AGE ADDRESS SALARY
2 Allen 25 25 Rich-Mond 65000.0
5 85000.0
#
下面的SELECT 語句列出了AGE 的值既不是25 也不是27 的所有記錄:
sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN, ( FROM COMPANY WHERE AGE NOT IN, ( 255, 25);# #ID NAME AGE ADDRESS ---------
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 與27725 與27 之間的所有記錄: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
---------- ---------- ---------- ---------- ----- -----
######################################################'#2 Allen 25 Tex造成 25 Rich-Mond 65000.0
5 85000.0
##sqlite> SELECT * FROM COMPANY
5 85000.0
##
下面的SELECT 語句使用SQL 子查詢,子查詢尋找SALARY > 65000 的所有關於AGE 欄位的記錄,後邊的WHERE 子句與EXISTS 運算子一起使用,列出了外查詢中的AGE 存在於子查詢回傳的結果中的所有記錄:
sqlite> SELECT AGE FROM COMPANY
WHERE EXISTS (SELECT#N1 ---------
32
25
23
25
27
22
24
下面的SELECT 語句使用SQL 子查詢,子查詢尋找SALARY > 65000 的所有帶有AGE 欄位的記錄,後邊的WHERE 子句與> 運算子一起使用,列出了外查詢中的AGE 大於子查詢傳回的結果中的年齡的所有記錄:WHERE EXISTS (SELECT#N1 ---------
32
25
23
25
27
22
24
WHERE WAGE > (SELECT7]] NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 Califor
1 Paul 32 Califor