数据库系统概论第三章关系数据库标准语言SQL(续1).ppt
3.4.3嵌套查询AnIntroductiontoDatabaseSystem带有IN谓词的子查询带有比较运算符的子查询带有ANY(SOME)或ALL谓词的子查询带有EXISTS谓词的子查询一、带有IN谓词的子查询AnIntroductiontoDatabaseSystem[例39]查询与“刘晨”在同一个系学习的学生。此查询要求可以分步来完成确定“刘晨”所在系名SELECTSdeptFROMStudentWHERESname=刘晨;结果为:CS带有IN谓词的子查询(续)AnIntroductiontoDatabaseSystem②查找所有在IS系学习的学生。SELECTSno,Sname,SdeptFROMStudentWHERESdept=CS;结果为:SnoSnameSdept200215121李勇CS200215122刘晨CS带有IN谓词的子查询(续)AnIntroductiontoDatabaseSystem将第一步查询嵌入到第二步查询的条件中01SELECTSno,Sname,Sdept02FROMStudent03WHERESdeptIN04(SELECTSdept05FROMStudent06WHERESname=‘刘晨’);07此查询为不相关子查询。08带有IN谓词的子查询(续)AnIntroductiontoDatabaseSystem用自身连接完成[例39]查询要求SELECTS1.Sno,S1.Sname,S1.SdeptFROMStudentS1,StudentS2WHERES1.Sdept=S2.SdeptANDS2.Sname=刘晨;0103020405带有IN谓词的子查询(续)AnIntroductiontoDatabaseSystem[例40]查询选修了课程名为“信息系统”的学生学号和姓名 SELECTSno,Sname③最后在Student关系中 FROMStudent取出Sno和Sname WHERESnoIN(SELECTSno②然后在SC关系中找出选FROMSC修了3号课程的学生学号WHERECnoIN(SELECTCno①首先在Course关系中找出FROMCourse“信息系统”的课程号,为3号WHERECname=‘信息系统’));带有IN谓词的子查询(续)AnIntroductiontoDatabaseSystemCourse.Cname=‘信息系统’;用连接查询实现[例40]SELECTSno,SnameFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoAND0304050601023.4.3嵌套查询AnIntroductiontoDatabaseSystem带有IN谓词的子查询带有比较运算符的子查询带有ANY(SOME)或ALL谓词的子查询带有EXISTS谓词的子查询二、带有比较运算符的子查询AnIntroductiontoDatabaseSystem当能确切知道内层查询返回单值时,可用比较运算符(,,=,=,=,!=或)。01与ANY或ALL谓词配合使用02带有比较运算符的子查询(续)AnIntroductiontoD