SQLite經典教學課程login
SQLite經典教學課程
作者:php.cn  更新時間:2022-04-13 17:05:02

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

下面的實例示範了 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

薪資大於等於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

下面的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' 之後的字元不做限制:

sqlite> SELECT * FROM COMPANY WHERE NAME) %';
ID          NAME        AGE         ADDRESS  ----  ----------
6           Kim         22          South-Hall  45000.0
下面的SELECT 語句列出了NAME 以'Ki' 開始的所有記錄, 'Ki' 之後的字元不做限制:

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID    ADDRESS     SALARY
------ ----  ----------  ----------  ----------  ----------
6           Kim         22 South-Hall  45000.0
下面的SELECT 陳述式列出了AGE 的值為25 或27 的所有記錄:

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

#

下面的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 之間的所有記錄:

sqlite> SELECT * FROM COMPANY WHERE AGE BETWE  AGE ADDRESS     SALARY
----------  ----------  ----------  ----------  ----- -----
2           Allen       25          Tex造成     25          Rich-Mond   65000.0
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 大於子查詢傳回的結果中的年齡的所有記錄:

sqlite> SELECT * FROM COMPANY 
        WHERE WAGE > (SELECT7]]      NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32           Califor



######################################################'#