第三章关系数据库语言_第1页
第三章关系数据库语言_第2页
第三章关系数据库语言_第3页
第三章关系数据库语言_第4页
第三章关系数据库语言_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库系AnIntroductiontoDatabase章关(续大学信.1单表3.4.2连接3.4.3嵌套3.4.4集合连接查[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名[<表名1>.]<列名1BETWEEN[<表名2>.]<列名2AND[<表名2>.]<列名连接字段连接条件中的各连接字段类型必须是可比的,但名字不必是相同嵌套循环法(NESTED-首先在表1满足连接件的元组,找到后就将表中的第一个元组与该元组拼2表2,逐一查找满足连接条件的元组,找到后就将表重复上述操作,直到表1排序合并法(SORT-排序合并法(SORT-连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。当遇到表2中找到表1的第二条元组,然后从刚才的中断点处继续顺索引连接(INDEX-索引连接(INDEX-对表2按连接字段建立索对表1中的每个元组,依次根据其连接字段值查询表2的索引,从中找到满足条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结连接查询(续连接查询(续[例33]查询每个学生及其选修课程的情况SELECTStudent.*,SC.* WHEREStudent.Sno=等值与非等值连接查询(续查询结男 1男 2男 3女 2 等值与非等值连接查询(续等值与非等值连接查询(续[例 对[例33]用自然连接完成SELECT WHEREStudent.Sno=连接查询(续连接查询(续自身连接: FROMCourseFIRST,CourseWHEREFIRST.Cpno 自身连接(续自身连接(续数信息操作5数据746数据2764自身连接(续自身连接(续操作5数据746数据2764自身连接(续自身连接(续 连接查询(续连接查询(续普通连接操作只输出外连接操作以指定表元组一并输[36]改写[例SELECTFROMStudentLEFTOUTJOINSCON外连接(续执行结男1男2男3女2 外连接(续外连接(续连接查询(续连接查询(续[例37]查询选修2号课程且成绩在90分以上的所有学SELECTStudent.Sno,Sname Student,SCWHEREStudent.Sno=SC.Sno/*连接谓词o=‘2’ANDSC.Grade>复合条件连接(续 SELECTStudent.Sno,Sname,Cname,Grade WHEREStudent.Sno=SC.Sno o .1单表3.4.2连接3.4.3嵌套3.4.4集合嵌套查询(嵌套查询(续一个SELECT-FROM-WHERE语句称为一个嵌套查询嵌套查询(续SELECTSnameFROMStudentWHERESnoIN(SELECTFROM

WHERECno='2嵌套查询(嵌套查询(续不能使用ORDERBY嵌套查询求解方法(续嵌套查询求解方法(续.3四、带有EXISTS谓词的子查询一、带有IN谓词的[例39]查询与“ SELECT WHERESname= 结果带有IN谓词的子查询(续

WHERESdept='CS结果

带有IN谓词的子查询(续SELECTFROMStudentWHERESdeptIN(SELECTFROMWHERESname=‘ 带有IN谓词的子查询(续SELECTS1.Sno,S1.Sname,S1.Sdept StudentS1,StudentS2WHERES1.Sdept=S2.SdeptANDS2.Sname=' 带有IN谓词的子查询(续[例40]查询选修了课程名为“信息系统”SELECT WHERESno(SELECTSno WHERECnoINFROM

修了3号课程的学生学“信息系统”的课程号,为3WHERECname=‘信息系统)带有IN带有IN谓词的子查询(续SELECT WHEREStudent.Sno=SC.Snoo o.3四、带有EXISTS谓词的子查询 算符(>,<,=,>=,<=,!=或<>)。带有比较运算符的子查询(续系,则在[例39]可以代替INSELECT WHERE (SELECT WHERESname= 带有比较运算符的子查询(续SELECT WHERE(SELECTFROMWHERESname= ’=带有比较运算符的子查询(续带有比较运算符的子查询(续相关子查FROM相关子查WHEREGrade>=(SELECTFROMSCWHERE带有比较运算符的子查询(续带有比较运算符的子查询(续从外层查询中取出SC的一个元组x,将元组x的Sno SELECTFROMSCWHERE FROMSCWHEREGrade带有比较运算符的子查询(续带有比较运算符的子查询(续 .3四、带有EXISTS谓词的子查询ANY:任意一个带有带有ANY(SOME)或ALL谓词的子查询(续>><<>=>=<=<==

!=(或!=(或

带有ANY(SOME)或ALL谓词的子查询(续[例42]查询其他系中比计算机科学某一学 SELECT WHERESage<ANY(SELECT WHERESdept='CS')ANDSdeptCS 带有ANY(SOME)或ALL谓词的子查询(续

RDBMS执行此查询时,首先处理子查CS系中所有学生 2019带有ANY(SOME)或ALL谓词的子查询(续 SELECTSname,Sage WHERESage<(SELECTFROMWHERESdept=‘CS')ANDSdept<>'CS’;带有ANY(SOME)或ALL谓词的子查询(续[例43]查询其他系中比计算机科学系所有学生 SELECTSname,SageFROMStudentWHERESage<(SELECTFROMWHERESdept='CS')ANDSdept<>'CS’;带有ANY(SOME)或ALL谓词的子查询(续 SELECTSname,SageFROMStudentWHERESage(SELECTFROMStudentWHERESdept='CS')ANDSdept<>'CS带有ANY(SOME)或ALL谓词的子查询(续表3.5ANY(或SOME),ALL谓词 函数、IN谓词的等价转换关=<>或<>->=NOT<=>=.3四、带有EXISTS谓词的子查询带有EXISTS带有EXISTS谓词的子查询(续存在量词带有EXISTS“true”或逻辑假值“false”若内层查询结果为空,则外层的WHERE子句返回假由EXISTS引出的子查询,其目标列表达式通常都用*,因为若内层查询结果为空,则外层的WHERE子句返回真带有EXISTS谓词的子查询(续[例44]查询所有选修了1号课程的学 本查询涉及Student和SC在Student中依次取每个元组的Sno值,用此值去检查SCC.Cno='1'm带有EXISTS带有EXISTS谓词的子查询(续SELECTSnameFROMStudentWHEREFROMWHERESno=Student.SnoANDCno='1带有EXISTS带有EXISTS谓词的子查询(续SELECTSnameFROMStudent,SC o=带有EXISTS谓词的子查询(续[例45]查询没有选修1号课程的学 SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMWHERESno=Student.SnoAND带有EXISTS带有EXISTS谓词的子查询(续不同形式的查询间的一些带EXISTS或NOTEXISTS查询等价替所有带IN谓词、比较运算符、ANY和ALLEXISTS谓词的子查询等价替用EXISTS/NOTEXISTS实现全称量词(难点可以把带有全称量词(x)P≡(x(带有EXISTS谓词的子查询(续 SELECTSno,Sname,SdeptFROMStudentWHERE(SELECTFROMStudentWHERES2.Sdept=S1.SdeptS2.Sname= 带有EXISTS谓词的子查询(续[例46]查询选修了全部课程的学 SELECTSnameFROMStudentWHERENOTEXISTS(SELECTFROMWHERENOT(SELECT*FROMWHERESno=AND )带有EXISTS带有EXISTS谓词的子查询(续pq≡带有EXISTS带有EXISTS谓词的子查询(续 则上述查询为y)p带有EXISTS带有EXISTS谓词的子查询(续(y)pq≡(y((pq≡(y((p∨q)≡ 带有EXISTS带有EXISTS谓词的子查询(续用NOTEXISTS谓词表示SELECTDISTINCTSnoFROMSCSCXWHERENOTEXISTS(SELECT*FROMSCSCYWHERESCY.Sno= NOTEXISTS(SELECT*FROMSCSCZWHERESCZ.Sno=SCX.Sno.1单表查3.4.2连接3.4.3嵌套3.4.4集合并操作差操作参加集合操作的各查询结果的列数必须相同;对集合查询(续[例48]查询计算机科学系的学生及 SELECTFROMStudentWHERESdept='CS'SELECTFROMWHERE集合查询(续集合查询(续SELECTDISTINCTFROMWHERESdept='CS'OR集合查询(续集合查询(续[例49]查询选修了课程1或者选修了课程2SELECTSnoFROMSCWHERECno='1'FROMSCWHERECno='2集合查询(续[例50]查询计算机科学系的学生与 SELECTFROMStudentWHERESdept='CS'SELECT*FROMStudentWHERESage<=19集合查询(续[例50]实际上就是查询计算机科学系中 SELECTFROMWHERESdept='CS'AND集合查询(续集合查询(续[例51]查询选修课程1的学生集合与选修课程2的学生集SELECTSnoFROMSCWHERECno='1'SELECTSnoFROMSCWHERECno='2';集合查询(续集合查询(续SELECTFROMWHERECno='1'ANDSnoFROMSCWHERECno='2集合查询(续[例52]查询计算机科学系的学生 SELECTFROMS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论