数据库上课第六讲SQL语言_3(连接与聚合)讲述

上传人:最**** 文档编号:116126671 上传时间:2019-11-15 格式:PPT 页数:51 大小:1.67MB
返回 下载 相关 举报
数据库上课第六讲SQL语言_3(连接与聚合)讲述_第1页
第1页 / 共51页
数据库上课第六讲SQL语言_3(连接与聚合)讲述_第2页
第2页 / 共51页
数据库上课第六讲SQL语言_3(连接与聚合)讲述_第3页
第3页 / 共51页
数据库上课第六讲SQL语言_3(连接与聚合)讲述_第4页
第4页 / 共51页
数据库上课第六讲SQL语言_3(连接与聚合)讲述_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《数据库上课第六讲SQL语言_3(连接与聚合)讲述》由会员分享,可在线阅读,更多相关《数据库上课第六讲SQL语言_3(连接与聚合)讲述(51页珍藏版)》请在金锄头文库上搜索。

1、机械自动化学院2015主讲:顾曦电话:15697181079Email:guxi主要内容SQL概述数据定义数据更新1简单查询连接查询聚合查询集合运算嵌套子查询SQL查询一般格式数据更新221.1等值与非等值连接1.2自表连接1.3外连接3在实际应用中,往往会涉及到多个关系的查询,需用到连接运算或子查询。连接运算包括41.1等值与非等值连接该运算在WHERE子句中加入连接多个关系的连接条件格式为:SELECTFROM表1WHERE.5比较运算符、=、=80按学号StudentNo分组,将具有相同StudentNo值的元组作为一组然后对每组进行相应的计数、求平均值和求最大值并判断平均值是否大于等于

2、80,如果是则输出该组,否则丢弃该组,不作为输出结果例3.52查询成绩最高分的学生的学号、课程号和相应成绩SELECTstudentNocourseNoscoreFROMScoreWHEREscore=(SELECTmax(score)FROMScore)聚合函数可直接用在HAVING子句中(如例3.51),也可用于子查询中(如例3.52),但在WHERE子句中不可以直接使用聚合函数。SELECTFROMScoreWHEREscore=max(score)42并操作UNION交操作INTERSECT差操作EXCEPT434.1集合运算SELECT语句查询的结果是集合(关系)集合操作的种类并:U

3、NION交:INTERSECT差:EXCEPT参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同44例3.57查询“信息管理学院”1990年出生的同学的学号、出生日期、班级名称和所属学院以及“会计学院”1991年出生的同学的学号、出生日期、班级名称和所属学院。SELECTstudentNobirthdayclassNameinstituteFROMStudentaClassbWHEREa.classNo=b.classNoANDyear(birthday)=1990ANDinstitute=信息管理学院UNIONSELECTstudentNobirthdayclassNamei

4、nstituteFROMStudentaClassbWHEREa.classNo=b.classNoANDyear(birthday)=1991ANDinstitute=会计学院45l该查询实际上是查询“信息管理学院”1990年出生的或“会计学院”1991年出生的同学的学号、出生日期、班级名称和所属学院,可用逻辑运算符OR实现:SELECTstudentNobirthdayclassNameinstituteFROMStudentaClassbWHEREa.classNo=b.classNoAND(year(birthday)=1990ANDinstitute=信息管理学院ORyear(bir

5、thday)=1991ANDinstitute=会计学院)ORDERBYinstitute464.2交运算(mysql不支持)查询同时选修了“001”号和“005”号课程的同学的学号和姓名SELECTa.studentNostudentNameFROMStudentaScorebWHEREa.studentNo=b.studentNoANDcourseNo=001INTERSECTSELECTa.studentNostudentNameFROMStudentaScorebWHEREa.studentNo=b.studentNoANDcourseNo=00547同样可用逻辑运算符AND实现注意:

6、mySQL、SQLServer数据库不支持交运算INTERSECT,交运算完全可以用其它运算替代SELECTa.studentNostudentNameFROMStudentaScorebWHEREa.studentNo=b.studentNoANDcourseNo=001ANDa.studentNoIN(SELECTstudentNoFROMScoreWHEREcourseNo=005)48例3.59差运算(不支持)查询没有选修“计算机原理”课程的同学的学号和姓名。SELECTstudentNostudentNameFROMStudentEXCEPTSELECTDISTINCTa.stude

7、ntNostudentNameFROMStudentaScorebCoursecWHEREa.studentNo=b.studentNoANDb.courseNo=c.courseNoANDcourseName=计算机原理49也可用NotIN实现查询没有选修“计算机原理”课程的同学的学号和姓名。SELECTstudentNostudentNameFROMStudentWHEREstudentNoNOTIN(SELECTstudentNoFROMScorexCourseyWHEREx.courseNo=y.courseNoANDcourseName=计算机原理)50作业:1、练习课本上本章已学部分的例子;要求:看懂,理解其执行过程。2、建立图书管理数据库BookDB和相关表(p131)要求:写出SQL文件后缀.sql;属性名要有注释;推荐文本编辑器notepad+。51

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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