资源描述:
《武汉大学数据库系统概论 第八讲 高级SQL查询.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第八讲高级SQL查询1本讲主要目标学完本讲后,你应该能够了解:1.高级SQL语句的语法不统一,不适用于所有的数据库系统;2.INTERSECT和EXCEPT是高级SQL提供的两个运算符,直接支持关系代数的“交”和“差”操作;3.高级SQL对FROM子句作了扩充,基本SQL的FROM子句中只包含表或视图列表,但高级SQL的FROM子句中可以包含子查询或连接表;4.准确、完整的SELECT语句的语法;5.SELECT语句的能力限制。2一.高级SQL语法概述二.INTERSECT和EXCEPT运算符三.高级SQL中的FROM子句四.Select语句的完整描述五.Select语句的
2、能力3查询语句基于的实例S学号姓名性别年龄所在系S#SNSESASD一个学生-课程数据库95001李勇男20CS95002刘晨女19ISC95003王敏女18MA课程号课程名先行课学分95004张立男19ISC#CNCP#CCC1数据库C54SC学号课程号成绩C2数学2S#C#GC3信息系统C1495001C192C4操作系统C6395001C285C5数据结构C7495001C388C6数据处理295002C290C7PASCAL语言C6495002C3804高级SQL语法概述5高级SQL语法概述1.高级SQL语法不统一、不适用于所有的数据库系统2.大多数高级语法对某些关
3、系查询提供了新的解法3.高级SQL提供“交”和“差”运算4.高级SQL对FROM子句进行了扩充6INTERSECT和EXCEPT运算符7INTERSECT和EXCEPT运算符1.UNION、INTERSECT和EXCEPT的高级SQL子查询形式Subquery{UNION[ALL]
4、INTERSECT[ALL]
5、EXCEPT[ALL]Subquery}Q1UNIONQ2表示子查询Q1结果与Q2结果的并;Q1INTERSECTQ2表示子查询Q1结果与Q2结果的交;Q1EXCEPTQ2表示子查询Q1结果与Q2结果的差;8INTERSECT和EXCEPT运算符2.使用INT
6、ERSECT例1查询既选修了课程“C1”又选修了课程“C2”的学生的学号与姓名SELECTS.S#,SNFROMS,SCWHERES.S#=SC.S#ANDC#=‘C1’INTERSECTSELECTS.S#,SNFROMS,SCWHERES.S#=SC.S#ANDC#=‘C2’9INTERSECT和EXCEPT运算符3.使用EXCEPT例2查询没选修“95001”所选修的任何课程的学生的学号。SELECTS#FROMSEXCEPTSELECTSC1.S#FROMSCSC1,SCSC2WHERESC1.C#=SC2.C#ANDSC2.S#=‘95001’;10INTERSE
7、CT和EXCEPT运算符例1和例2的UNION结果中有重ALL产生复行吗?的结果中有重复行11INTERSECT和EXCEPT运算符4.UNIONALL的使用Q:=Q1UNION[ALL]Q2假定元组X在Q1结果中出现M次,在Q2结果中出现N次UNION不使用ALL时,若M或N不为0,则Q中X出现的次数=1,否则=0UNION使用ALL时,Q中X出现的次数=M+N假定Q1的查询结果为{a,a,a,b,b,c,d},Q2的查询结果为{a,a,b,b,b,c,e}则Q1UNIONALLQ2的结果为{a,a,a,a,a,b,b,b,b,b,c,c,d,e}Q1UNIONQ2的
8、结果为{a,b,c,d,e}12INTERSECT和EXCEPT运算符5.INTERSECTALL的使用Q:=Q1INTERSECT[ALL]Q2假定X在Q1结果中出现M次,在Q2结果中出现N次INTERSECT不使用ALL时,若M或N为0,则Q中X出现的次数=0,否则=1INTERSECT使用ALL时,Q中X出现的次数=MIN(M,N);假定Q1的查询结果为{a,a,a,b,b,c,d},Q2的查询结果为{a,a,b,b,b,c,e}则Q1INTERSECTALLQ2的结果为{a,a,b,b,c}Q1INTERSECTQ2的结果为{a,b,c}13INTERSECT和
9、EXCEPT运算符6.EXCEPTALL的使用Q:=Q1EXCEPT[ALL]Q2假定X在Q1结果中出现M次,在Q2结果中出现N次EXCEPT不使用ALL时,若M不为0且N为0,则Q中X出现的次数=1,否则=0EXCEPT使用ALL时,Q中X出现的次数=M-N,若M-N为负数,则看作0假定Q1的查询结果为{a,a,a,b,b,c,d},Q2的查询结果为{a,a,b,b,b,c,e}则Q1EXCEPTALLQ2的结果为{a,d}Q1EXCEPTQ2的结果为{d}14高级SQL中的FROM子句15高级SQL中的FR