- SQLite 教程
- SQLite - 首頁
- SQLite - 概述
- SQLite - 安裝
- SQLite - 命令
- SQLite - 語法
- SQLite - 資料型別
- SQLite - 建立資料庫
- SQLite - 附加資料庫
- SQLite - 分離資料庫
- SQLite - 建立表
- SQLite - 刪除表
- SQLite - INSERT 查詢
- SQLite - SELECT 查詢
- SQLite - 運算子
- SQLite - 表示式
- SQLite - WHERE 子句
- SQLite - AND & OR 子句
- SQLite - UPDATE 查詢
- SQLite - DELETE 查詢
- SQLite - LIKE 子句
- SQLite - GLOB 子句
- SQLite - LIMIT 子句
- SQLite - ORDER BY 子句
- SQLite - GROUP BY 子句
- SQLite - HAVING 子句
- SQLite - DISTINCT 關鍵字
- 高階 SQLite
- SQLite - PRAGMA
- SQLite - 約束
- SQLite - JOIN
- SQLite - UNION 子句
- SQLite - NULL 值
- SQLite - 別名語法
- SQLite - 觸發器
- SQLite - 索引
- SQLite - INDEXED BY 子句
- SQLite - ALTER 命令
- SQLite - TRUNCATE 命令
- SQLite - 檢視
- SQLite - 事務
- SQLite - 子查詢
- SQLite - AUTOINCREMENT
- SQLite - 注入
- SQLite - EXPLAIN
- SQLite - VACUUM
- SQLite - 日期和時間
- SQLite - 有用函式
- SQLite 有用資源
- SQLite - 快速指南
- SQLite - 有用資源
- SQLite - 討論
SQLite - WHERE 子句
SQLite 的WHERE子句用於在從一個或多個表中提取資料時指定條件。
如果給定的條件滿足,即為真,則它將返回表中的特定值。 你必須使用 WHERE 子句來過濾記錄,並僅提取必要的記錄。
WHERE 子句不僅用於 SELECT 語句,還用於 UPDATE、DELETE 語句等,這些將在後續章節中介紹。
語法
以下是帶有 WHERE 子句的 SQLite 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
以下是一個簡單的示例,展示了 SQLite 邏輯運算子的用法。以下 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 或者 salary 大於或等於 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
以下 SELECT 語句使用了 SQL 子查詢,其中子查詢查詢所有 AGE 欄位的 SALARY > 65000 的記錄,然後 WHERE 子句與 EXISTS 運算子一起使用,列出外部查詢中 AGE 存在於子查詢返回的結果中的所有記錄。
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 的記錄,然後 WHERE 子句與 > 運算子一起使用,列出外部查詢中 AGE 大於子查詢返回的結果中 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