- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主讲: 顾 曦
电话Email:guxi@
;主要内容;;1.0 概念;具体表现在如下几个方面:
元素与集合间的属于关系
集合之间的包含和相等关系
集合的存在关系
元素与集合元素之间的比较关系
在子查询中,不允许使用ORDER BY子句,该子句仅用于最后的输出结果排序
嵌套查询分为相关子查询和非相关子查询
非相关子查询:子查询的结果不依赖于上层查询
相关子查询:当上层查询的元组发生变化时,其子查询必须重新执行
;嵌套查询求解方法;嵌套查询求解方法(续);1.1 使用IN的子查询;该查询属于非相关子查询,执行过程如图3-23。;其查询过程为:
(1) 从Score表中查询出学生的学号studentNo,构成一个中间结果关系r;
(2) 从Student表中取出第一个元组t;
(3) 如果元组t的studentNo属性的值包含在中间结果关系r中(即t.studentNo∈r),则将元组t的studentName属性的值作为最终查询???果关系的一个元组;否则丢弃元组t;
(4) 如果Student表中还有元组,则取Student表的下一个元组t,并转第(3)步;否则转第(5)步;
(5) 将最终结果关系显示出来;在本例中,WHERE子句用于检测元素与集合间的属于关系
其中Student.studentNo为元素,IN为“属于”
嵌套语句“SELECT Score.studentNo FROM Score”的查询结果为选修过课程的所有学生的学号集合
该嵌套SELECT语句称为子查询
;[例3.38] ;WHERE子句中的IN可以实现多重嵌套,该查询的执行过程可以通过下图来表示;使用IN的非相关子查询的查询过程归纳如下:
1、首先执行最底层的子查询块,将该子查询块的结果作为中间关系;
2、执行上一层(即外一层)查询块,对于得到的每个元组,判断该元组是否在它的子查询结果中:
如果在,取出该元组中的相关属性作为最终输出结果(或该查询块的查询结果中间关系)的一个元组
否则舍弃该元组
3、如果已经执行完最上层查询块,则将最终结果作为一个新关系输出;否则返回第(2)步重复执行;1.2 使用比较运算符的子查询 ;[例3.41] ;[例3.42] ;;ANY(或SOME),ALL谓词与聚集函数、IN谓词的等价转换关系;1.3 使用存在量词EXISTS的子查询;[例3.43] ;本查询涉及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.44] 查询选修了所有课程的学生姓名。;;相关子查询在SQL中属于复杂的查询,其子查询的查询条件依赖于外层查询的元组值
当外层查询的元组值发生变化时,其子查询要重新依据新的条件进行查询
使用EXISTS的相关子查询处理过程是:
(1) 首先取外层查询的第一个元组;
(2) 依据该元组的值,执行子查询;
(3) 如果子查询的结果非空(EXISTS量词返回真值),将外层查询的该元组放入到结果集中;否则(EXISTS量词返回假值),舍弃外层查询的该元组;
(4) 取外层查询的下一个元组,返回第(2)步重复上述过程,直到外层查询所有的元组处理完毕;
(5) 将结果集合中的元组作为一个新关系输出;带有EXISTS谓词的子查询总结; 3、不同形式的查询间的替换
一些带EXISTS或NOT EXISTS谓词的子查询不能被其他形式的子查询等价替换
所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价替换
4、用双重否定 NOT EXISTS +NOT EXISTS实现全称量词 ;例:查询所有选修了1号课程的学生姓名;;;SELECT共有6个子句,其中SELECT和FROM是必须的,其它是可选项,必须严格按照如下顺序排列
SELECT [ALL | DISTINCT] 目标列表达式 [AS] [别名]
您可能关注的文档
- 万马股份基本情况题库.docx
- 软件质量管理-配置管理过程题库.ppt
- 数据结构习题12.17技术总结.ppt
- 通信原理(樊昌信)第10章信源编码技术总结.ppt
- 数据结构习题答案技术总结.doc
- 数据结构习题集技术总结.doc
- 通信原理.4-2技术总结.ppt
- 数据结构习题技术总结.ppt
- 数据结构线性表的顺序表示和实现(C语言)技术总结.doc
- 数据结构线性表技术总结.ppt
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第2课时 点的坐标特征.pptx
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第3课时 建立适当的平面直角坐标系.pptx
- 北师大版(2024)八年级数学上册课件 4.3 一次函数的图象 第1课时 正比例函数的图象及性质.pptx
- (人教A版数学选择性必修三)讲义第15讲7.1.1条件概率(学生版+解析).docx
- (人教A版数学选择性必修三)讲义第19讲8.1成对数据的统计相关性(8.1.1变量的相关关系+8.1.2样本相关系数)(学生版+解析).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第2课时 加减消元法.pptx
- (人教A版数学选择性必修一)2025年秋季学期讲义第01讲1.1.1空间向量及其线性运算(学生版+教师版).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第1课时 代入消元法.pptx
- 北师大版(2024)八年级数学上册课件 5.3 二元一次方程组的应用 第3课时 二元一次方程组的应用(3).pptx
- 北师大版(2024)八年级数学上册课件 5.4 二元一次方程与一次函数 第2课时 用二元一次方程组确定一次函数表达式.pptx
文档评论(0)