MySQL函数2
2022/3/6 2:15:29
本文主要是介绍MySQL函数2,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
聚合函数(只有一个结果)
聚合函数的介绍
- 聚合函数的常用类型(都不含空值)
AVG()
SUM()
MAX()
MIN()
COUNT()
AVG()和SUM()
- AVG:求平均
- SUM():求和
#求平均工资和工资总和 SELECT AVG(salary),SUM(salary) FROM employees;
注:不能处理字符串
MAX()和MIN()
- MAX():求最大
- MIN():求最小
#求最高工资和最低工资 SELECT AVG(salary),SUM(salary) FROM employees;
注:可以处理字符串,数值类型,日期时间类型的字段(或变量)
COUNT()
COUNT():计算指定字段在查询结果中出现的个数
SELECT COUNT('*') FROM employees
注:不包括null
- 查询表中有多少条记录:
- COUNT('*')(推荐)
- COUNT(1)(推荐)
- COUNT(指定字段),但不一定对(MyISAM存储中效率一样)
- AVG = SUM \ COUNT永远成立
GROUP BY(分组)
基本使用
#求各个部门的平均工资 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id;
使用 多个列分组
#求各个部门同一工种的平均工资 SELECT department_id,job_id,AVG(salary) FROM employees GROUP BY department_id,job_id;#没有先后之分
-
非组函数的字段必须声明在GROUP BY中
-
GROUP BY在FROM和WHERE的后面,在ORDER BY和LIMIT的后面
GROUP BY中使用WITH ROLLUP
会多出一行(在最后),是总的平均值
不能用ORDER BY 排序
#求各个部门的平均工资 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id WITH ROLLUP;
HAVING的使用(过滤数据)
- 过滤条件有聚合函数,必须用HAVING来替换
- 过滤条件没有聚合函数,推荐用WHERE
- HAVING必须声明在GROUP BY的后面
- 使用HAVING的前提是使用了GROUP BY
基本使用
#查部门id是10,20,30,40四个部门最高工资超过10000的部门信息 方式一:推荐(效率高) SELECT department_id,sum(salary) FROM employees WHERE department——id IN(10,20,30,40) GROUP BY department_id HAVING sum(salary) > 10000; 方式二: SELECT department_id,sum(salary) FROM employees GROUP BY department_id HAVING sum(salary) > 10000 and department——id IN(10,20,30,40);
WHERE和HAVING的比较
- 适用范围:HARING适用范围更广
- 没有聚合函数:WHERE效率高于HARING
SELECT的执行过程
查询结构
#SQL92 SELECT...,...(存在组函数) FROM ...,... WHERE 多表的连接 AND 不包含聚合函数的过滤条件 GROUP BY...,... HARING BY包含聚合函数的过滤条件 ORDER BY...,...(ASC \ DESC) LIMIT...,... #SQL99 SELECT...,...(存在组函数)#2 FROM ... (LEFT \ RIGHT)JOIN ...#1 ON多表的连接条件 (LEFT \ RIGHT)JOIN ... ON 多表的连接条件 WHERE 不包含聚合函数的过滤条件 GROUP BY...,... HARING BY包含聚合函数的过滤条件 ORDER BY...,..(ASC \ DESC)#3 LIMIT...,...
SELECT执行顺序(执行每一步都会有一个虚拟表)
FROM->ON->(LEFT \ RIGHT JOIN)->WHERE->GROUP BY->HAVING->SELECT->DISTINCT->ORDER BY->LIMIT
SQL执行原理
同上
这篇关于MySQL函数2的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南