1月9日小结
- from后可接子查询语句,但是要重命名(as可省略)同时,子查询用括号括上
from (select * from EMP)[as]Temp
- where条件语句不能接聚合函数(sum、avg、max、min、count)
- group by语句是对字段进行分组,天生带去重的功能,group by后的数据表中一行有多组数据,因此select 后不能直接*查全部,select接的字段只能是group by的字段或者聚合函数的字段:
select No,sum(Grade) from scoretable group by No 查询学生的总成绩
select age from scoretable group by No 会报错,因为age字段有多值
- having的作用,是对group by的聚合字段进行过滤,弥补了where子句后不能接聚合函数的缺陷。
select No,sum(Grade) from scoretable group by No having sum(Grade) > 180 查找总分大于180的学生姓名以及总分数
- from后可接子查询(重命名),where 后可接子查询,having后也可以接子查询。
select No,sum(Grade) from scoretable group by No having sum(Grade) =(select max(avg(Grade)from scoretable group by No))查找总分数最高的学生姓名以及总分数
- selct语句的执行顺序为:from数据源-》where条件-》group by分组-》having分组过滤-》oder by对结果进行排序-》limit控制显示多少行----》select后字段的最终结果