- 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