内容正文:
MySQL数据库应用开发
单元5 记录的查询
任务5.2 MySQL数据查询
单表查询——高级查询
知识点小结
本章实验
任务5.2 MySQL数据查询
能力目标
1.掌握单表查询之高级查询(重点);
2.掌握聚合函数的使用 (难点)。
思政目标
1.培养精益求精的工作作风;
2.锻炼互帮互助的协作工作能力。
复习
简单查询:
SELECT子句、FROM子句、WHERE子句
高级查询
高级查询:
分组查询
对查询结果进行排序
限制查询结果数量
聚合函数
分组查询
GROUP BY关键字可以将查询结果按某个字段或多个字段进行分组。字段中值相等的为一组。
语法格式:
GROUP BY字段名 [HAVING条件表达式]
其中,“字段名”是指按照该字段的值进行分组;“HAVING条件表达式”用来限制分组后的显示,满足条件表达式的结果将被显示;
如果单独使用GROUP BY关键字,查询结果只显示一个分组的一条记录。
GROUP BY关键字加上“HAVING条件表达式”,可以限制输出的结果。只有满足条件表达式的结果才会显示。
6
分组查询
例:
按student表的Ssex字段进行分组查询。
SELECT * FROM student GROUP BY Ssex;
分组查询
例:
按student表的Ssex字段进行分组查询。然后显示记录数大于等于5的分组(COUNT()用来统计记录的条数)。
SELECT ssex,COUNT(Ssex)
FROM student
GROUP BY Ssex
HAVING COUNT(Ssex)>=5;
说明:“HAVING条件表达式”与“WHERE条件表达式”都是用来限制显示的。但是,两者起作用的地方不一样。“WHERE条件表达式”作用于表或者视图,是表和视图的查询条件。“HAVING条件表达式”作用于分组后的记录,用于选择满足条件的组。
对查询结果排序
使用ORDER BY关键字对记录进行排序。
语法格式: ORDER BY字段名[ASC|DESC]
其中,“字段名”参数表示按照该字段进行排序;
ASC参数表示按升序的顺序进行排序;
DESC参数表示按降序的顺序进行排序。
默认的情况下,按照ASC方式进行排序。
GROUP BY 和 ORDER BY一起使用时的注意点
order by的列,必须是出现在group by子句里的列
ORDER BY要在GROUP BY的后面
9
对查询结果排序
例:
查询student表中所有记录,按照Zno字段进行排序。
SELECT * FROM student ORDER BY Zno ;
对查询结果排序
注意:如果存在一条记录zno字段的值为空值(NULL)时,这条记录将显示为第一条记录。因为,按升序排序时,含空值的记录将最先显示。可以理解为空值是该字段的最小值。而按降序排列时,zno字段为空值的记录将最后显示。
MySQL中,可以指定按多个字段进行排序。例如,可以使student表按照zno字段和sno字段进行排序。排序过程中,先按照zno字段进行排序。遇到zno字段的值相等的情况时,再把zno值相等的记录按照sno字段进行排序。
对查询结果排序
例:
查询student表中所有记录,按照zno字段的升序方式和sno字段的降序方式进行排序。SELECT语句如下:
SELECT * FROM student ORDER BY Zno ASC,Sno DESC;
限制查询结果数量
例:
在student表中查找从第3名同学开始的3位学生的信息。
SELECT * FROM student ORDER BY Sno LIMIT 2,3;
聚合函数
集合函数包括COUNT()、SUM()、 AVG()、 MAX()和MIN()。其中,
COUNT()用来统计记录的条数,Count(字段)不统计null值;
SUM()用来计算字段的值的总和;
AVG()用来计算字段的值的平均值;
MAX()用来查询字段的最大值;
MIN()用来查询字段的最小值。
GROUP BY关键字通常需要与集合函数一起使用。
sql中having、group by用法及常用聚合函数
having是用在聚合函数的用法。当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算。运算完后就要用到HAVING 的用法了,就是进行判断了。
注意:select 后的字段,必须要么包含在group by中,要么包含在having 后的聚合函数里。
having 用法与WHERE用法类似,但有三点不同