SQLite WHERE子句
SQLite的WHERE子句用於指定條件,同時從一個表或多個表中獲取數據。
如果給定的條件被滿足時,表示真(true),那麼它返回從表中的特定值。可以使用WHERE子句來過濾記錄和獲取隻需要記錄。
WHERE子句不僅在SELECT語句中使用,但它也可用於在UPDATE,DELETE語句等等,這是我們將在隨後的章節中學習。
語法
SQLite的SELECT語句的基本語法與WHERE子句如下:
SELECT column1, column2, columnN FROM table_name WHERE [condition]
例子:
您還可以指定一個使用比較或邏輯運算符,如>,<,=,LIKE,NOT,等考慮COMPANY 表以下記錄:
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
下麵是簡單的例子顯示使用SQLite的邏輯運算符。下麵的SELECT語句列出了所有的記錄年齡大於或等於25和工資大於或等於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
下麵的SELECT語句列出了所有的記錄年齡大於或等於25或薪金大於或等於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
下麵的SELECT語句列表年齡不為NULL,這意味著所有記錄下來的記錄,因為記錄是冇有年齡等於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
下麵的SELECT語句列出了所有的記錄名稱開頭 'Ki',
sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%'; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 6 Kim 22 South-Hall 45000.0
下麵的SELECT語句列出了所有的記錄名稱開頭 'Ki',
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*'; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 6 Kim 22 South-Hall 45000.0
下麵的SELECT語句列表年齡值是25或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語句列表年齡值既不是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語句列出了所有的年齡值是在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子查詢子查詢發現所有記錄年齡字段的薪金>65000,後跟 WHERE子句一起使用EXISTS操作列出了所有的記錄存在年齡從外麵查詢子查詢返回的結果:
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後被用於WHERE子句>運算符一起列出了所有的記錄,其中從外部查詢年齡大於歲子查詢返回的結果:
sqlite> SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000); ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0