之前介绍了
- 数据库基本常识的简介及mysql安装
- 结构化查询语言sql
- 数据库表介绍
- 数据库的数据类型
- 数据操作语言DML——数据的增删改查
- 数据库对象操作语言DDL——修改、删除数据库表等对象
- 数据库的完整性约束
- 数据库查询语言——DQL
- 数据库中的函数
- 数据库的group by分组和having筛选
接下来总结一下DQL,也就是对select进行总结
- 格式:select 列名 函数(列名) from 表名 [where 条件][group by 列名][having 条件][order by 列名 [asc或者desc]],注意这里的顺序是不能改变的。
- 也就是说表名后面加where条件,后面加group by分组,再加分组后的条件having,最后加排序order by。
- 执行顺序:先确定表名from,从表中过滤的条件where(第一次过滤),进行分组group by得到需要的行和列(或者这里可以叫得到需要的组,以及对应的列,也就是进行select),分组之后having进行过滤掉不需要的行(第二次过滤),最后再排序。
- from -> where -> group by -> select ->having ->order by;
- 所有工资最小值小于2000的职位:select job from emp group by job having min(sal)<2000;
- 列出平均工资大于1200元的部门和工作搭配组合:
- 首先这是获取搭配组合:select job,deptno from emp group by deptno,job;,需要注意的是,这是之后select后面只能是多行函数,或者是分组的列,因为没有分组的列会出现一对多的形式。
- 最终结果:select job,deptno,avg(sal) from emp group by deptno,job having avg(sal)>1200;
- 统计人数小于4的部门的平均工资:select deptno,count(),avg(sal) from emp group by deptno having count()<4;
- 统计各部门的最高工资,排除最高工资小于3000的部门:select deptno,max(sal) from emp group by deptno having max(sal)>=3000;