WHERE 条件
WHERE 子句用于过滤查询结果,只返回满足条件的记录。这是 SQL 中非常重要的功能,让你能够精确地控制查询结果。
基本语法
比较运算符
基本比较
示例:查询特定年龄的用户
结果:
逻辑运算符
AND 运算符
同时满足多个条件:
OR 运算符
满足任一条件:
NOT 运算符
否定条件:
运算符优先级
范围查询
BETWEEN 运算符
查询指定范围内的值(包含边界值):
等价于:
日期范围查询
集合查询
IN 运算符
查询值在指定集合中的记录:
等价于:
NOT IN 运算符
子查询中的 IN
模糊查询
LIKE 运算符
使用通配符进行模糊匹配:
百分号 %
% 匹配任意数量的字符(包括零个):
下划线 _
_ 匹配单个字符:
示例:灵活的模糊查询
ESCAPE 字符
处理包含特殊字符的字符串:
NULL 值处理
IS NULL 和 IS NOT NULL
NULL 的特性
COALESCE 和 NULL 处理
组合条件
复杂条件组合
使用括号分组
常用条件模式
模式 1:日期过滤
模式 2:数值范围
模式 3:多条件组合
WHERE vs HAVING
WHERE
- 在分组前过滤
- 不能使用聚合函数
HAVING
- 在分组后过滤
- 可以使用聚合函数
示例对比
性能优化
1. 使用索引
2. 避免在 WHERE 中使用函数
3. 使用 EXISTS 而不是 IN
实战示例
示例 1:用户筛选
示例 2:订单查询
示例 3:商品搜索
常见错误
错误 1:混淆 = 和 ==
错误 2:字符串没有引号
错误 3:NULL 使用比较运算符
小结
本章介绍了 WHERE 子句的各种用法:
- 比较运算符:=, !=, >, <, >=, <=
- 逻辑运算符:AND, OR, NOT
- 范围查询:BETWEEN
- 集合查询:IN, NOT IN
- 模糊查询:LIKE, %, _
- NULL 处理:IS NULL, IS NOT NULL
- 组合条件:使用括号分组
- WHERE vs HAVING:过滤时机不同
- 性能优化:使用索引、避免函数、使用 EXISTS
WHERE 子句是 SQL 查询的核心,掌握各种条件过滤方法,可以精确地控制查询结果。
下一步: 学习 排序和分页,学习如何对查询结果进行排序和分页。