《(6.1.1)--3.5排序、分组查询-PPT》由会员分享,可在线阅读,更多相关《(6.1.1)--3.5排序、分组查询-PPT(9页珍藏版)》请在金锄头文库上搜索。
1、数 据 库 系 统 概 论数 据 库 系 统 概 论 Introduction to Database Systems Database SystemDatabase System 主讲人:王岩 河南理工大学 第三章第三章 结构化查询语言结构化查询语言- -SQLSQL 知知 识识 点点 SQLSQL语言概述语言概述 1 1 创建与管理数据库与表创建与管理数据库与表 2 2 创建与管理索引创建与管理索引 3 3 单表查询单表查询 4 4 数据操纵 8 8 连接查询 6 6 嵌套查询 7 7 排序、分组查询排序、分组查询 5 5 3.5 排序、分组查询 1、对查询结果进行排序 在现实生活中很多的
2、数据库的操作中,我们需要对操作结果进行排序,例如想知道某一个班级中,某门课程学生最高分是多少?最低分是多少?我们该如何使用SQL语句完成这样的操作? 排序问题排序问题 查询莫言编写的图书的“图书名称”和“单价”,查询结果按单价降序排列。 SELECT 图书名称,单价 FROM 图书 WHERE 主编= 莫言 ORDER BY 单价 DESC; 排序排序操作操作1 1 还可以在多列上进行排序操作:查询所有的图书信息查询结果按照出版社名升序排列,同一出版社的按照单价降序排列。 SELECT * FROM 图书 ORDER BY 出版社,单价 DESC; 排序排序操作操作2 2 3.5 排序、分组查
3、询 2、聚集函数 在对数据库的数据进行查询的操作中,常常需要对操作结果进行统计工作,可以使用聚集函数来完成部分统计工作! 聚集函数聚集函数 统计查询学生总人数, SELECT COUNT (*) FROM 学生 统计参加选课的学生的人数。 SELECT COUNT(DISTINCT 学号) FROM 选课 实例实例 3.5 排序、分组查询 2、聚集函数 常用的聚集函数有: COUNT( DISTINCT |ALL *):统计元组的个数。 COUNT( DISTINCT |ALL ):统计一列中值的个数。 SUM( DISTINCT |ALL ):计算一列值的总和。 AVG( DISTINCT
4、|ALL ):计算一列值的平均值。 MAX( DISTINCT |ALL ):求一列值的最大值。 MIN( DISTINCT |ALL ):求一列值的最小值。 常用的聚集函数常用的聚集函数 3.5 排序、分组查询 3、分组查询 很多场景下,需要把查询结果按照某一列或者多列的值进行分组,也就是说在这些列上值相等会被分成一个小组。为什么要进行分组哪?是因为需要对结果进行汇总统计计算。这些计算常常是对一个分组进行的,而不是对表的所有记录进行的。 分组查询分组查询 GROUP BY子句可以将查询结果按某一列或多列值分组,值相等的为一组。同时,我们还可以使用HAVING短语设置逻辑条件来筛选组。 分组操
5、作分组操作 3.5 排序、分组查询 查询各个出版社的图书数量。 SELECT 出版社,COUNT(图书号) FROM 图书 GROUP BY出版社; 例例1 1 3、分组查询 查询借阅了3本以上图书的读者的读者编号。 SEELCT 读者编号 FROM 借阅 GROUP BY 读者编号 HAVING COUNT(*)3; 例例2 2 WHERE子句与HAVING短语的区别在于作用对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。 3.5 排序、分组查询 4、保存分组查询结果 在实际应用中,有时需要将查询结果保存成一个表。这个功能可以用SELECT语句中的INTO子句来实现。 格式如下: SELECT INTO FROM 保存结果保存结果 查询每门课程的平均分,并把它输出到一个新表中保存 SELECT 课程号 AVG(成绩) 平均分 INTO 课程成绩表 FROM 选课 GROUP BY 课程号 实例实例 排序查询的定义及其实现语句。 聚集函数的作用及其实现语句。 GROUP BY 子句实现分组查询的语句。