SQLite WHERE 子句

SQLite WHERE子句用于指定從一個或多個表中獲取數(shù)據(jù)時的條件。

如果滿足給定條件,即為true,那么它將從表中返回特定值。您將必須使用WHERE子句來過濾記錄并僅提取必要的記錄。

WHERE子句不僅在SELECT語句中使用,而且在UPDATE,DELETE語句等中使用,這將在后續(xù)章節(jié)中介紹。

語法

以下是帶有WHERE子句的SQLite SELECT語句的基本語法。

SELECT column1, column2, columnN FROM table_nameWHERE [condition]

在線示例

您可以使用比較運(yùn)算符或邏輯運(yùn)算符(例如>,<,=,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邏輯運(yùn)算符用法的簡單示例。以下SELECT語句列出AGE(年齡)大于或等于25 和 SALARY (薪水)大于或等于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語句列出AGE(年齡)大于或等于25SALARY (薪水)大于或等于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語句列出了AGE(年齡)不為NULL的所有記錄,這意味著將顯示所有記錄,因?yàn)闆]有記錄的AGE的值等于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語句列出了NAME以'Ki'開頭的所有記錄,而與'Ki'之后的任意記錄。

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

以下SELECT語句列出了NAME以'Ki'開頭的所有記錄,與'Ki'之后的記錄無關(guān)。

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

在SELECT語句之后,列出了AGE(年齡)值為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語句列出了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運(yùn)算符一起使用,以列出外部查詢存在AGE的所有記錄在子查詢返回的結(jié)果中-

sqlite> SELECT AGE FROM COMPANY 
   WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

AGE
----------
32
25
23
25
27
22
24

以下SELECT語句使用SQL子查詢,其中子查詢查找AGE字段的SALARY> 65000的所有記錄,以及與 > 運(yùn)算符一起使用的where子句列出外部查詢的AGE大于子查詢返回的結(jié)果中的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
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清