SQLite的 WHERE
子句用于指定從一個表或多個表中獲取數(shù)據(jù)的條件祷舀。
如果滿足給定的條件鉴未,即為真(true
)時舶吗,則從表中返回特定的值洒疚。您可以使用 WHERE
子句來過濾記錄歹颓,只獲取需要的記錄。
WHERE
子句不僅可用在 SELECT
語句中油湖,它也可用在 UPDATE
巍扛、DELETE
語句中,等等乏德。
語法
SQLite 的帶有 WHERE
子句的 SELECT
語句的基本語法如下:
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
下面的 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
大于等于 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
語句列出了 AGE
不為 NULL
的所有記錄,結果顯示所有的記錄蹦误,意味著沒有一個記錄的 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'
之后的字符不做限制:
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