数据库系统教程教学课件作者何玉洁李宝安第6章节高级查询.ppt

数据库系统教程教学课件作者何玉洁李宝安第6章节高级查询.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例26另一种实现方法 SELECT Cname,Credit FROM Course WHERE Cno IN ( --李勇选的课程 SELECT Cno FROM SC JOIN Student S ON S.Sno = SC.Sno WHERE Sname = 李勇 ) AND Cno IN ( --刘晨选的课程 SELECT Cno FROM SC JOIN Student S ON S.Sno = SC.Sno WHERE Sname = 刘晨 ) * * 6.4.3 差运算 SELECT语句1 EXCEPT SELECT语句2 EXCEPT … … SELECT语句n * * 示例 例27 查询在t1表中有但在t2表中没有的记录。 SELECT * from t1 EXCEPT SELECT * from t2 * * 示例 例28 查询李勇选了但刘晨没有选的课程的课程名和开课学期。 SELECT C.Cno, Cname, Semester FROM Course C JOIN SC ON C.Cno = SC.Cno JOIN Student S ON S.Sno = SC.Sno WHERE Sname = 李勇 EXCEPT SELECT C.Cno, Cname, Semester FROM Course C JOIN SC ON C.Cno = SC.Cno JOIN Student S ON S.Sno = SC.Sno WHERE Sname = 刘晨 * * 例28的另一种实现方式 SELECT C.Cno, Cname, Semester FROM Course C JOIN SC ON C.Cno = SC.Cno JOIN Student S ON S.Sno = SC.Sno WHERE Sname = 李勇 AND C.Cno NOT IN ( SELECT C.Cno FROM Course C JOIN SC ON C.Cno = SC.Cno JOIN Student S ON S.Sno = SC.Sno WHERE Sname = 刘晨) * * * * 开场白: * 在本页讲述演示内容,先进行简单介绍 * 一些等价运算 表达式 = {SOME|ANY}(子查询) ?表达式 IN (子查询) 表达式 = {SOME|ANY}(子查询) ?表达式 = MIN(子查询) 表达式 = {SOME|ANY}(子查询) ?表达式 = MAX(子查询) * * 一些等价运算 表达式 = ALL(子查询) ?表达式 = MIN(子查询) 表达式 ALL(子查询) ?表达式 NOT IN(子查询) 表达式 = ALL(子查询) ?表达式 = MAX(子查询) * * 6.3.2 带EXISTS谓词的子查询 EXISTS代表存在量词?。 WHERE [NOT] EXISTS(子查询) 不返回查询的数据,只产生逻辑真值和假值。 EXISTS:当子查询中有满足条件的数据时,返回真值,否则返回假值。 NOT EXISTS:当子查询中有满足条件的数据时,返回假值;否则返回真值。 * * 示例 例16 查询选修了“C002”号课程的学生姓名。 SELECT Sname FROM Student WHERE EXISTS ( SELECT * FROM SC WHERE Sno = Student.Sno AND Cno = C002) * * 注意 带EXISTS谓词的查询是先外后内,即先执行外层查询,再执行内层查询。 外层查询的值决定内层查询的结果; 内层查询的执行次数由外层查询的结果决定。 由于EXISTS的子查询只返回真、假值,因此在子查询中指定列名没有意义,通常都用“*” * * 例16执行顺序 ① 无条件执行外层查询语句,在外层查询的结果集中取第一行结果,得到Sno的一个当前值。 ② 将外层的Sno值作为已知值执行内层查询,如果在内层查询中有满足WHERE条件的记录,则EXISTS返回True,如果没有,则返回False,表示在外层查询结果集中的当前行数据不是满足要求的结果。 ③ 顺序处理外层Student表的第2、3、… 行数据,直到处理完所有行。 * * 相关子查询 带EXISTS的子查询由于在子查询中要涉及与外层表数据的关联,因此经常将这种形式的子查询称为相关子查询 * * 示例 例17 查询选修了VB课程的学生姓名和所在系 SELECT S

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档