6-2-第4章-数据库的查询-分组课件

上传人:s9****2 文档编号:568831511 上传时间:2024-07-27 格式:PPT 页数:18 大小:181.50KB
返回 下载 相关 举报
6-2-第4章-数据库的查询-分组课件_第1页
第1页 / 共18页
6-2-第4章-数据库的查询-分组课件_第2页
第2页 / 共18页
6-2-第4章-数据库的查询-分组课件_第3页
第3页 / 共18页
6-2-第4章-数据库的查询-分组课件_第4页
第4页 / 共18页
6-2-第4章-数据库的查询-分组课件_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《6-2-第4章-数据库的查询-分组课件》由会员分享,可在线阅读,更多相关《6-2-第4章-数据库的查询-分组课件(18页珍藏版)》请在金锄头文库上搜索。

1、第6章 数据库的查询4.3.1 group by子句与分组数据子句与分组数据 having子句子句4.3.2 order by子句子句4.3.3 limit子句子句一一个个完完整整的的SQL语语句句的的结结构构: 所有被使用的子句必须按语法说明中显示的顺序严格地排序。 SELECT 字段或分组函数FROM 表名或视图名WHERE 筛选条件GROUP BY 分组列HAVING 分组筛选条件ORDER BY 列LIMIT ; SELECT 语句4.3.1 GROUP BY4.3.1 GROUP BY子句子句GROUP BY子句主要用于根据字段对行分组。例如,根据学生所学的专业对XS表中的所有行分组

2、,结果是每个专业的学生成为一组。GROUP BY子句的语法格式如下:GROUP BY col_name | expr | position ASC | DESC, . WITH ROLLUP说明:GROUP BY子句后通常包含列名或表达式。MySQL对GROUP BY子句进行了扩展,可以在列的后面指定ASC(升序)或DESC(降序)。GROUP BY可以根据一个或多个列进行分组,也可以根据表达式进行分组,经常和聚合函数一起使用。4.3.1 GROUP BY4.3.1 GROUP BY子句子句【例4.19】 求求XSCJ数据库中各专业的学生数。数据库中各专业的学生数。 SELECT 专业名,CO

3、UNT(*) AS 学生数 FROM XS GROUP BY 专业名;4.3.1 GROUP BY4.3.1 GROUP BY子句子句练习1 求各门课程的平均成绩。4.3.1 GROUP BY4.3.1 GROUP BY子句子句练习2查询每个专业的男生人数、女生人数。HAVINGHAVING子句子句使用HAVING子句的目的与WHERE子句类似,不同的是WHERE子句是用来在FROM子句之后选择行,而HAVING子句用来在GROUP BY子句后选择行。例如,查找XSCJ数据库中平均成绩在85分以上的学生,就是在XS_KC表上按学号分组后筛选出符合平均成绩大于等于85的学生。语法格式:HAVIN

4、G where_definition其中,where_definition是选择条件,条件的定义和WHERE子句中的条件类似,不过HAVING子句中的条件可以包含聚合函数,而WHERE子句中则不可以。SQL标准要求HAVING必须引用GROUP BY子句中的列或用于聚合函数中的列。不过,MySQL支持对此工作性质的扩展,并允许HAVING引用SELECT清单中的列和外部子查询中的列。HAVINGHAVING子句子句【例4.20】 查找XSCJ数据库中平均成绩在85分以上的学生的学号和平均成绩。SELECT 学号, AVG(成绩) AS 平均成绩FROM XS_KCGROUP BY 学号HAVI

5、NG AVG(成绩) =85;HAVINGHAVING子句子句【练习3】查询平均分超过80分的学生学号,其平均分及其最高分HAVINGHAVING子句子句【练习4】 查找XSCJ数据库中平均成绩在76分以上的课程和平均成绩。HAVINGHAVING子句子句【例4.21】 查找选修课程超过2门且成绩都在80分以上的学生的学号。分析:本查询将XS_KC表中成绩大于80的记录按学号分组,对每组记录计数,选出记录数大于2的各组的学号值形成结果表。SELECT 学号 FROM XS_KCWHERE 成绩 = 80GROUP BY 学号HAVING COUNT(*) 2;HAVINGHAVING子句子句【

6、练习5】查找选修课程超过2门且学号以3结尾的学生学号和选修课程数。4.3.2 ORDER BY4.3.2 ORDER BY子句子句在一条SELECT语句中,如果不使用ORDER BY子句,结果中行的顺序是不可预料的。使用ORDER BY子句后可以保证结果中的行按一定顺序排列。语法格式:ORDER BY col_name | expr | position ASC | DESC , .说明:ORDER BY子句后可以是一个列、一个表达式或一个正整数。正整数表示按结果表中该位置上的列排序。例如,使用ORDER BY 3表示对SELECT的列清单上的第3列进行排序。关键字ASC表示升序排列,DESC

7、表示降序排列,系统默认值为ASC。【例4.22】 将通信工程专业的学生按出生日期先后排序。SELECT 学号,姓名,专业名,出生时间 FROM XS WHERE 专业名 = 通信工程 ORDER BY 出生时间;ORDER BYORDER BY子句子句【练习6】输出学生成绩,先按学生姓名排序再按成绩排序。ORDER BYORDER BY子句子句【练习7】计算学生平均成绩,并按成绩由大到小排序输出4.3.5 LIMIT4.3.5 LIMIT子句子句LIMIT子句是SELECT语句的最后一个子句,主要用于限制被SELECT语句返回的行数。语法格式:LIMIT offset, row_count |

8、 row_count OFFSET offset说明:语法格式中的offset和row_count都必须是非负的整数常数,offset指定返回的第一行的偏移量,row_count是返回的行数。例如,“LIMIT 5”表示返回SELECT语句的结果集中最前面5行,而“LIMIT 3,5”则表示从第4行开始返回5行。值得注意的是初始行的偏移量为0而不是1。【例4.23】 查找XS表中学号最靠前的5位学生的信息。SELECT * FROM XSORDER BY 学号LIMIT 5;ORDER BYORDER BY子句子句【练习8】查找XS表中从第4位同学开始的5位学生的信息为了与PostgreSQL

9、兼容,MySQL也支持LIMIT row_count OFFSET offset语法。所以将上面例子中的LIMIT子句换成“LIMIT 5 OFFSET 3”,结果一样。SELECT * FROM XSORDER BY 学号LIMIT 5 OFFSET 3;练习与作业练习与作业1、 将XSCJ数据库中各专业名输出。2、 求XSCJ数据库中的男女学生数。3、 求被选修的各门课程的平均成绩和选修该课程的人数。4、 在XSCJ数据库上产生一个结果集,包括每个专业的每个 总学分有多少人。5、 查找XSCJ数据库中平均成绩在85分以上的学生的学号 和平均成绩。6、 查找选修课程超过2门且成绩都在70分以上的学生学号、 选修门数和平均成绩7、 将通信工程专业的学生按出生日期先后排序。8、 查找XS表中学号最靠前的5位学生的信息。9、 查找XS表中从第4位同学开始的5位学生的信息。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号