资源预览内容
第1页 / 共51页
第2页 / 共51页
第3页 / 共51页
第4页 / 共51页
第5页 / 共51页
第6页 / 共51页
第7页 / 共51页
第8页 / 共51页
第9页 / 共51页
第10页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
机械自动化学院2015主讲:顾曦电话:15697181079Email:guxi主要内容SQL概述数据定义数据更新1简单查询连接查询聚合查询集合运算嵌套子查询SQL查询一般格式数据更新221.1等值与非等值连接1.2自表连接1.3外连接3在实际应用中,往往会涉及到多个关系的查询,需用到连接运算或子查询。连接运算包括41.1等值与非等值连接该运算在WHERE子句中加入连接多个关系的连接条件格式为:SELECTFROM表1WHERE.5比较运算符、=、=80按学号StudentNo分组,将具有相同StudentNo值的元组作为一组然后对每组进行相应的计数、求平均值和求最大值并判断平均值是否大于等于80,如果是则输出该组,否则丢弃该组,不作为输出结果例3.52查询成绩最高分的学生的学号、课程号和相应成绩SELECTstudentNocourseNoscoreFROMScoreWHEREscore=(SELECTmax(score)FROMScore)聚合函数可直接用在HAVING子句中(如例3.51),也可用于子查询中(如例3.52),但在WHERE子句中不可以直接使用聚合函数。SELECTFROMScoreWHEREscore=max(score)42并操作UNION交操作INTERSECT差操作EXCEPT434.1集合运算SELECT语句查询的结果是集合(关系)集合操作的种类并:UNION交:INTERSECT差:EXCEPT参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同44例3.57查询“信息管理学院”1990年出生的同学的学号、出生日期、班级名称和所属学院以及“会计学院”1991年出生的同学的学号、出生日期、班级名称和所属学院。SELECTstudentNobirthdayclassNameinstituteFROMStudentaClassbWHEREa.classNo=b.classNoANDyear(birthday)=1990ANDinstitute=信息管理学院UNIONSELECTstudentNobirthdayclassNameinstituteFROMStudentaClassbWHEREa.classNo=b.classNoANDyear(birthday)=1991ANDinstitute=会计学院45l该查询实际上是查询“信息管理学院”1990年出生的或“会计学院”1991年出生的同学的学号、出生日期、班级名称和所属学院,可用逻辑运算符OR实现:SELECTstudentNobirthdayclassNameinstituteFROMStudentaClassbWHEREa.classNo=b.classNoAND(year(birthday)=1990ANDinstitute=信息管理学院ORyear(birthday)=1991ANDinstitute=会计学院)ORDERBYinstitute464.2交运算(mysql不支持)查询同时选修了“001”号和“005”号课程的同学的学号和姓名SELECTa.studentNostudentNameFROMStudentaScorebWHEREa.studentNo=b.studentNoANDcourseNo=001INTERSECTSELECTa.studentNostudentNameFROMStudentaScorebWHEREa.studentNo=b.studentNoANDcourseNo=00547同样可用逻辑运算符AND实现注意:mySQL、SQLServer数据库不支持交运算INTERSECT,交运算完全可以用其它运算替代SELECTa.studentNostudentNameFROMStudentaScorebWHEREa.studentNo=b.studentNoANDcourseNo=001ANDa.studentNoIN(SELECTstudentNoFROMScoreWHEREcourseNo=005)48例3.59差运算(不支持)查询没有选修“计算机原理”课程的同学的学号和姓名。SELECTstudentNostudentNameFROMStudentEXCEPTSELECTDISTINCTa.studentNostudentNameFROMStudentaScorebCoursecWHEREa.studentNo=b.studentNoANDb.courseNo=c.courseNoANDcourseName=计算机原理49也可用NotIN实现查询没有选修“计算机原理”课程的同学的学号和姓名。SELECTstudentNostudentNameFROMStudentWHEREstudentNoNOTIN(SELECTstudentNoFROMScorexCourseyWHEREx.courseNo=y.courseNoANDcourseName=计算机原理)50作业:1、练习课本上本章已学部分的例子;要求:看懂,理解其执行过程。2、建立图书管理数据库BookDB和相关表(p131)要求:写出SQL文件后缀.sql;属性名要有注释;推荐文本编辑器notepad+。51
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号