首页
技术小册
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.3.5 MIN() 最小值函数 在MySQL数据库中,`MIN()` 函数是一个非常重要的聚合函数(Aggregate Function),它用于从一组值中检索出最小值。无论是在数据分析、报表生成,还是在优化数据库查询性能时,`MIN()` 函数都扮演着不可或缺的角色。本章将深入探讨`MIN()`函数的用法、应用场景、性能考量以及与其他SQL功能的结合使用,帮助读者从入门到精通这一强大的SQL工具。 #### 9.3.5.1 理解MIN()函数基础 `MIN()`函数作用于一列或多列(在多列使用时需结合其他SQL特性,如分组),返回这些列中的最小值。其基本语法如下: ```sql SELECT MIN(column_name) FROM table_name WHERE condition; ``` 这里,`column_name` 是你想要查找最小值的列名,`table_name` 是表名,而`WHERE`子句(可选)用于指定过滤条件,以限制哪些行被纳入最小值计算中。 #### 9.3.5.2 单列应用示例 假设我们有一个名为`sales`的表,记录了不同产品的销售信息,包括产品ID(`product_id`)、销售日期(`sale_date`)和销售数量(`quantity`)。如果我们想找出销售数量最少的产品的数量,可以这样做: ```sql SELECT MIN(quantity) AS min_quantity FROM sales; ``` 这条查询将返回`sales`表中`quantity`列的最小值,并将结果列命名为`min_quantity`。 #### 9.3.5.3 结合分组(GROUP BY)使用 `MIN()`函数常与`GROUP BY`语句结合使用,以计算每个分组内的最小值。例如,如果我们想知道每种产品的销售数量最小值,可以这样做: ```sql SELECT product_id, MIN(quantity) AS min_quantity FROM sales GROUP BY product_id; ``` 这里,`GROUP BY product_id`指示MySQL按照`product_id`对销售记录进行分组,然后`MIN(quantity)`计算每个分组内的最小销售数量。 #### 9.3.5.4 性能考量 虽然`MIN()`函数在大多数场景下都能高效运行,但在处理大量数据时,其性能可能受到多种因素的影响。以下是一些提升`MIN()`函数查询性能的建议: 1. **索引优化**:确保对用于`MIN()`函数的列(或作为`GROUP BY`子句中一部分的列)建立索引。索引可以显著减少MySQL需要扫描的数据量,从而提高查询速度。 2. **查询优化**:避免在`WHERE`子句中使用复杂的计算或函数,这可能会使索引失效。尽量将过滤条件前置,以减少需要处理的数据量。 3. **使用合适的存储引擎**:MySQL支持多种存储引擎,如InnoDB和MyISAM。不同的存储引擎在处理聚合函数时可能有不同的性能表现。了解你的应用场景,选择最适合的存储引擎。 4. **分区表**:对于非常大的表,考虑使用分区技术将表分割成更小的、更易于管理的部分。分区可以根据数据的某个属性(如日期)进行,从而优化查询性能。 5. **避免全表扫描**:全表扫描是性能杀手。确保你的查询能够利用索引,避免不必要的全表扫描。 #### 9.3.5.5 与其他SQL功能的结合 `MIN()`函数可以与其他SQL功能无缝结合,以执行更复杂的查询任务。以下是一些示例: - **与HAVING子句结合**:`HAVING`子句用于对聚合后的结果进行过滤。例如,要找出销售数量最小值小于10的所有产品ID及其最小销售数量,可以这样写: ```sql SELECT product_id, MIN(quantity) AS min_quantity FROM sales GROUP BY product_id HAVING MIN(quantity) < 10; ``` - **与JOIN操作结合**:`MIN()`函数可以与`JOIN`操作结合使用,以跨表计算最小值。例如,如果我们有一个`products`表记录了产品信息,想要找出每个产品类别的最小销售数量,可能需要将`sales`表与`products`表进行连接: ```sql SELECT p.category, MIN(s.quantity) AS min_quantity FROM products p JOIN sales s ON p.product_id = s.product_id GROUP BY p.category; ``` - **与窗口函数结合**(MySQL 8.0+):在MySQL 8.0及更高版本中,窗口函数(Window Functions)的引入为数据分析提供了更强大的工具。虽然`MIN()`本身不是窗口函数,但可以通过与`OVER()`子句结合使用,实现更复杂的计算。例如,计算每个产品在同一销售日期内的最小销售数量: ```sql SELECT product_id, sale_date, MIN(quantity) OVER (PARTITION BY product_id, sale_date) AS min_quantity_on_day FROM sales; ``` #### 9.3.5.6 结论 `MIN()`函数是MySQL中一个非常实用的聚合函数,它能够帮助我们快速找出数据集中的最小值。通过结合使用索引、优化查询、分区表以及与其他SQL功能的结合,我们可以充分发挥`MIN()`函数的潜力,提高数据处理和分析的效率。无论是数据分析师、数据库管理员还是开发人员,掌握`MIN()`函数的使用都是提升数据库操作能力的关键一步。希望本章的内容能够帮助读者从入门到精通`MIN()`函数,更好地利用这一强大的SQL工具。
上一篇:
9.3.4 MAX()最大值函数
下一篇:
9.4 连接查询
该分类下的相关小册推荐:
MySQL从入门到精通(四)
MySQL从入门到精通(二)
MySQL8.0入门与实践
MySQL必会核心问题
MySQL 实战 45 讲
SQL零基础到熟练应用(增删改查)
细说MySQL(零基础到高级应用)
MySQL从入门到精通(五)
MySQL必知必会核心内容
MySQL从入门到精通(一)