数据库课件CH3SQL语言1章节幻灯片.ppt

数据库课件CH3SQL语言1章节幻灯片.ppt

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.4.3 使用存在量词EXISTS的子查询 本查询涉及Student、Score和Course三个关系,属于相关子查询,查询过程如下: (1) 首先取Student表的第一个元组x,并取其学号x.studentNo; (2) 执行子查询,该子查询对表Score和Course进行连接,并选择其学号为x.studentNo,其课程名为“计算机原理”的元组; (3) 如果子查询中可以得到结果(即存在元组),则将Student表中元组x的学生姓名和所在班级编号组成一个新元组放在结果集合中;否则(即不存在元组),直接丢弃元组x; (4) 如果Student表中还有元组,则取Student表的下一个元组x,并取其学号x.studentNo,转第(2)步;否则转第(5)步; (5) 将结果集合中的元组作为一个新关系输出 子查询的目标列通常是* 存在量词EXISTS只判断其后的子查询的结果集合中是否存在元素,没有必要给出查询结果的列名 3.4.3 使用存在量词EXISTS的子查询 相关子查询在SQL中属于复杂的查询,其子查询的查询条件依赖于外层查询的元组值 当外层查询的元组值发生变化时,其子查询要重新依据新的条件进行查询 使用EXISTS的相关子查询处理过程是: (1) 首先取外层查询的第一个元组; (2) 依据该元组的值,执行子查询; (3) 如果子查询的结果非空(EXISTS量词返回真值),将外层查询的该元组放入到结果集中;否则(EXISTS量词返回假值),舍弃外层查询的该元组; (4) 取外层查询的下一个元组,返回第(2)步重复上述过程,直到外层查询所有的元组处理完毕; (5) 将结果集合中的元组作为一个新关系输出 本例可直接使用连接或IN运算来实现 3.4.3 使用存在量词EXISTS的子查询 [例3.44] 查询选修了所有课程的学生姓名。 分析: 本查询要使用全称量词,含义是: 选择这样的学生,任意一门课程他都选修了 设谓词P(x, c)表示学生x选修了课程c,本查询可表示为: 选择这样的学生x,使 。 SQL中没有全称量词,使用存在量词和取非运算来实现,转换公式如下: 谓词 表示学生x没有选修课程c。 根据该转换公式,可将上述查询描述为: 查询这样的学生x,不存在他没有选修的课程c 3.4.3 使用存在量词EXISTS的子查询 SELECT studentName FROM Student x WHERE NOT EXISTS ( SELECT * FROM Course c WHERE NOT EXISTS --判断学生x.studentNo没有选修课程c.courseNo ( SELECT * FROM Score WHERE studentNo=x.studentNo AND courseNo=c.courseNo ) ) 3.4.3 使用存在量词EXISTS的子查询 [例3.45] 查询至少选修了学号为“0700002”学生所选修的所有课程的学生姓名。 分析: 本查询的含义是选择这样的学生,凡是“0700002”学生选修了的课程,他也选修了。 本例要使用蕴涵量词,SQL不提供蕴涵量词,可通过使用存在量词和取非运算来实现,转换公式如下: 用谓词R(c)表示“0700002”学生选修了c课程 用谓词P(x, c)表示学生x选修了c课程 本查询可表示为:选择这样的学生x,使 3.4.3 使用存在量词EXISTS的子查询 将该公式进行转换: 根据转换公式,上述查询描述为 选择这样的学生x,不存在某门课程c,“0700002”学生选修了,而学生x没有选修。 3.4.3 使用存在量词EXISTS的子查询 SELECT studentName FROM Student x WHERE NOT EXISTS ( SELECT * FROM Score y WHERE studentNo=0700002 --查询学生0700002所选修课程的情况

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档