位置:首頁 > 數據庫 > SQLite教學 > SQLite WHERE子句

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