基本语法
SELECT 字段列表
FROM 表名
WHERE 字段名 [NOT] BETWEEN 值1 AND 值2;
核心特点
1. 包含边界值:BETWEEN AND 查询包含两端的值(闭区间)
2. 适用于多种数据类型:数字、日期、字符串等
3. 可读性强:比使用 `>=` 和 `<=` 组合更直观
使用示例
1. 数字范围查询
查询年龄20到23岁之间的学生(包含20和23)
SELECT name, age FROM students WHERE age BETWEEN 20 AND 23;
等价于
SELECT name, age FROM students WHERE age >= 20 AND age <= 23;
2. 日期范围查询
查询2015-10-01到2016-05-01之间注册的学生
SELECT name, login_date FROM students WHERE login_date BETWEEN '2015-10-01' AND '2016-05-01';
3. 字符串范围查询
查询名字字母顺序在D到J之间的学生
SELECT name FROM students WHERE name BETWEEN 'D' AND 'J';
4. NOT BETWEEN 反向查询
查询年龄不在20到23岁之间的学生
SELECT name, age FROM students WHERE age NOT BETWEEN 20 AND 23;
注意事项
1. 边界值包含:
`BETWEEN 20 AND 23` 包含20和23
如果需要不包含边界,应使用 `>` 和 `<`
2. 参数顺序:
第一个参数必须小于或等于第二个参数
`BETWEEN 23 AND 20` 会返回空结果
3. 日期格式:
使用标准格式 'YYYY-MM-DD' 或 'YYYY-MM-DD HH:MM:SS'
不同格式可能导致查询结果不准确
4. 性能考虑:
对索引列使用 BETWEEN 通常能有效利用索引
大范围查询可能影响性能
高级用法
1. 与其他条件组合
查询20-23岁之间且身高≥170cm的女生
SELECT name, age, height FROM students WHERE age BETWEEN 20 AND 23 AND height >= 170 AND sex = 'F';
2. 在JOIN查询中使用
查询特定时间段内注册且购买了商品的学生
SELECT s.name, o.order_date FROM students s JOIN orders o ON s.id = o.student_id WHERE o.order_date BETWEEN '2023-01-01' AND '2023-03-31';
3. 在聚合函数中使用
统计20-23岁学生的平均身高
SELECT AVG(height) AS avg_height FROM students WHERE age BETWEEN 20 AND 23;
与IN操作符的区别
特性 | BETWEEN AND | IN |
---|---|---|
适用场景 | 连续范围 | 离散值集合 |
语法示例 | WHERE age BETWEEN 20 AND 30 | WHERE age IN (20, 25, 30) |
性能特点 | 对范围索引友好 | 对大量离散值可能性能下降 |
实际应用场景
1. 电商系统:查询特定价格区间的商品
SELECT product_name, price FROM products WHERE price BETWEEN 100 AND 500;
2. 学校管理系统:查询特定分数段的学生
SELECT student_name, score FROM exam_results WHERE score BETWEEN 80 AND 90;
3. 人力资源系统:查询特定入职时间段的员工
SELECT employee_name, hire_date FROM employees WHERE hire_date BETWEEN '2020-01-01' AND '2022-12-31';
BETWEEN AND 是 MySQL 中表达范围条件的高效方式,合理使用可以使 SQL 语句更加简洁易读,同时保持良好性能。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程