首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
9.1 基本查询语句
9.2 单表查询
9.2.1 查询所有字段
9.2.2 查询指定字段
9.2.3 查询指定数据
9.2.4 带关键字IN的查询
9.2.5 带关键字BETWEEN AND的范围查询
9.2.6 带LIKE的字符匹配查询
9.2.7 用IS NULL关键字查询空值
9.2.8 带AND的多条件查询
9.2.9 带OR的多条件查询
9.2.10 用DISTINCT关键字去除结果中的重复行
9.2.11 用ORDER BY关键字对查询结果进行排序
9.2.12 用GROUP BY关键字分组查询
9.2.13 用LIMIT限制查询结果的数量
9.3 聚合函数查询
9.3.1 COUNT()统计函数
9.3.2 SUM()求和函数
9.3.3 AVG()平均数函数
9.3.4 MAX()最大值函数
9.3.5 MIN()最小值函数
9.4 连接查询
9.4.1 内连接查询
9.4.2 外连接查询
9.4.3 复合条件连接查询
9.5 子查询
9.5.1 带IN关键字的子查询
9.5.2 带比较运算符的子查询
9.5.3 带EXISTS关键字的子查询
9.5.4 带ANY关键字的子查询
9.5.5 带ALL关键字的子查询
9.6 合并查询结果
9.7 定义表和字段的别名
9.7.1 为表取别名
9.7.2 为字段取别名
9.8 使用正则表达式查询
9.8.1 匹配指定字符中的任意一个
9.8.2 使用“*”和“ ”来匹配多个字符
9.8.3 匹配以指定的字符开头和结束的记录
10.1 MySQL函数
10.2 数学函数
10.2.1 ABS(x)绝对值函数
10.2.2 FLOOR(x)向下取整函数
10.2.3 RAND()随机数函数
10.2.4 PI()圆周率函数
10.2.5 TRUNCATE(x,y)截断函数
10.2.6 ROUND(x)近似值函数和ROUND(x,y)四舍五入函数
10.2.7 SQRT(x)平方函数
10.3 字符串函数
10.3.1 INSERT(s1,x,len,s2)替换函数
10.3.2 UPPER(s)函数和UCASE(s)字母大写函数
10.3.3 LEFT(s,n)取左函数
10.3.4 RTRIM(s)去空格函数
10.3.5 SUBSTRING(s,n,len)截取函数
10.3.6 REVERSE(s)反转函数
10.3.7 FIELD(s,s1,s2,…,sn)位置函数
10.3.8 LOCATE(s1,s)、POSITION(s1 IN s)和INSTR(s,s1)3个位置函数
10.4 日期和时间函数
10.4.1 CURDATE()和CURRENT_DATE()当前日期函数
10.4.2 CURTIME()和CURRENT_TIME()当前时间函数
10.4.3 NOW()当前日期和时间函数
10.4.4 DATEDIFF(d1,d2)间隔天数函数
10.4.5 ADDDATE(d,n)日期计算函数
10.4.6 ADDDATE(d,INTERVAL expr type)日期时间计算函数
10.4.7 SUBDATE(d,n)日期计算函数
10.5 条件判断函数
10.6 系统信息函数
10.6.1 获取MySQL版本号、连接数和数据库名的函数
10.6.2 获取用户名的函数
10.6.3 获取字符串的字符集和排序方式的函数
10.7.1 格式化函数FORMAT(x,n)
10.7.2 改变字符集的函数
10.7.3 改变字段数据类型的函数
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(三)
小册名称:MySQL从入门到精通(三)
### 9.2.5 带关键字BETWEEN AND的范围查询 在数据库查询中,经常需要检索位于某个特定范围内的数据记录。MySQL 提供了 `BETWEEN AND` 关键字组合,使得执行这类范围查询变得既简单又高效。本节将深入探讨 `BETWEEN AND` 的工作原理、使用场景、注意事项以及一些高级应用技巧,帮助读者从入门到精通这一强大的查询功能。 #### 9.2.5.1 理解BETWEEN AND `BETWEEN AND` 关键字用于在 SQL 查询中指定一个值的范围,以便从数据库表中检索出该范围内的所有记录。其基本语法如下: ```sql SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; ``` - `column_name(s)`:你希望检索的列名,可以是一个或多个,多个列名之间用逗号分隔。 - `table_name`:包含数据的表名。 - `value1` 和 `value2`:定义范围边界的值,其中 `value1` 是范围的起始值(包含),`value2` 是范围的结束值(也包含)。 值得注意的是,`BETWEEN AND` 会自动按照升序(从小到大)解释范围,即使 `value1` 大于 `value2`,MySQL 也会先对这两个值进行排序,再执行查询。但出于最佳实践和可读性考虑,建议总是将较小的值放在 `value1` 的位置。 #### 9.2.5.2 使用场景示例 假设我们有一个名为 `employees` 的表,其中包含了员工的 `id`、`name` 和 `salary` 字段。现在,如果我们想找出所有薪资在 5000 到 8000(包含5000和8000)之间的员工,我们可以使用如下 SQL 查询: ```sql SELECT name, salary FROM employees WHERE salary BETWEEN 5000 AND 8000; ``` 这个查询将返回 `salary` 字段值在 5000 到 8000 范围内的所有员工记录。 #### 9.2.5.3 注意事项 1. **包含边界**:`BETWEEN AND` 查询会包含范围的两个边界值。如果你需要排除边界值,可能需要考虑使用 `>` 和 `<` 操作符。 2. **数据类型**:确保 `value1` 和 `value2` 的数据类型与 `column_name` 的数据类型一致,以避免类型转换导致的意外结果。 3. **空值处理**:如果 `column_name` 中包含 `NULL` 值,这些记录将不会被 `BETWEEN AND` 查询返回,因为 `NULL` 不与任何值相等,包括范围边界。 4. **性能考虑**:对于包含大量数据的表,使用 `BETWEEN AND` 时应考虑索引的使用情况。如果查询的列上有适当的索引,MySQL 可以更快地执行查询。 5. **排序与性能**:虽然 `BETWEEN AND` 本身不涉及排序,但如果你需要按范围内的值进行排序显示结果,可以结合使用 `ORDER BY` 子句。 #### 9.2.5.4 高级应用技巧 ##### 1. 结合其他条件 `BETWEEN AND` 可以与其他 `WHERE` 子句条件结合使用,以构建更复杂的查询。例如,查找薪资在 5000 到 8000 之间且部门编号为 'IT' 的员工: ```sql SELECT name, salary, department FROM employees WHERE salary BETWEEN 5000 AND 8000 AND department = 'IT'; ``` ##### 2. 使用NOT BETWEEN AND 要查找不在指定范围内的记录,可以使用 `NOT BETWEEN AND`。例如,找出薪资不在 5000 到 8000 之间的员工: ```sql SELECT name, salary FROM employees WHERE salary NOT BETWEEN 5000 AND 8000; ``` ##### 3. 应用于日期范围 `BETWEEN AND` 同样适用于日期和时间类型的字段。例如,查询2023年1月1日至2023年1月31日之间入职的员工: ```sql SELECT name, hire_date FROM employees WHERE hire_date BETWEEN '2023-01-01' AND '2023-01-31'; ``` 注意,日期字符串的格式应与数据库中的存储格式一致。 ##### 4. 排除特定值 有时,你可能需要在 `BETWEEN AND` 范围内排除某些特定值。这通常需要使用 `NOT IN` 或 `<>`(不等于)操作符结合子查询或联合查询来实现,因为 `BETWEEN AND` 本身不支持直接排除特定值。 #### 9.2.5.5 结论 `BETWEEN AND` 是 SQL 中一个非常有用的关键字组合,它允许我们轻松地检索位于指定范围内的数据记录。通过了解其工作原理、掌握使用场景、注意潜在的问题以及掌握高级应用技巧,我们可以更加高效、灵活地构建 SQL 查询,从而更好地管理和分析数据库中的数据。在编写复杂的查询时,始终记得考虑性能因素,并适当利用索引来优化查询速度。
上一篇:
9.2.4 带关键字IN的查询
下一篇:
9.2.6 带LIKE的字符匹配查询
该分类下的相关小册推荐:
MySQL8.0入门与实践
MySQL从入门到精通(一)
MySQL 实战 45 讲
细说MySQL(零基础到高级应用)
MySQL从入门到精通(五)
MySQL从入门到精通(四)
MySQL必会核心问题
SQL零基础到熟练应用(增删改查)
MySQL从入门到精通(二)