第3章数据库关系数据库标准语言SQL连接查询PPT文档格式.ppt
- 文档编号:15039903
- 上传时间:2022-10-27
- 格式:PPT
- 页数:73
- 大小:784KB
第3章数据库关系数据库标准语言SQL连接查询PPT文档格式.ppt
《第3章数据库关系数据库标准语言SQL连接查询PPT文档格式.ppt》由会员分享,可在线阅读,更多相关《第3章数据库关系数据库标准语言SQL连接查询PPT文档格式.ppt(73页珍藏版)》请在冰豆网上搜索。
连接运算符为=例33查询每个学生及其选修课程的情况Student表表学学号号Sno姓姓名名Sname性性别别Ssex年年龄龄Sage所所在在系系Sdept200215121200215121200215122200215123200515125李勇李勇刘晨刘晨王敏王敏张立张立男男女女女女男男20191819CSCSMAIS学学号号Sno课程号课程号Cno成绩成绩Grade200215121200215121200215121200215122200215122123239285889080SC表表查询每个学生及其选修课程的情况SELECTStudent.*,SC.*FROMStudent,SCWHEREStudent.Sno=SC.Sno;
等值与非等值连接查询(续)等值与非等值连接查询(续)Student.SnoSnameSsexSageSdeptSC.SnoCnoGrade200215121李勇男20CS200215121192200215121李勇男20CS200215121285200215121李勇男20CS200215121388200215122刘晨女19CS200215122290200215122刘晨女19CS200215122380查询结果:
查询结果:
嵌套循环连接算法嵌套循环连接算法等值与非等值连接查询(续)等值与非等值连接查询(续)v自然连接:
去掉目标列中重复的属性列例34对例33用自然连接完成。
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudent,SCWHEREStudent.Sno=SC.Sno;
二、自身连接二、自身连接v自身连接:
一个表与其自己进行连接v需要给表起别名以示区别v由于所有属性名都是同名属性,因此必须使用别名前缀例35查询每一门课的间接先修课(即先修课的先修课)SELECTFIRST.Cno,SECOND.CpnoFROMCourseFIRST,CourseSECONDWHEREFIRST.Cpno=SECOND.Cno;
自身连接(续)自身连接(续)FIRST表(Course表)CnoCnameCpnoCcredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PASCAL语言语言64CnoCnameCpnoCcredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PASCAL语言语言64SECOND表(Course表)自身连接(续)自身连接(续)查询结果:
CnoPcno173556三、外连接三、外连接v外连接与普通连接的区别普通连接操作只输出满足连接条件的元组外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出例36改写例33SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudentLEFTOUTERJOINSCON(Student.Sno=SC.Sno);
外连接(续)外连接(续)执行结果:
执行结果:
Student.SnoSnameSsexSageSdeptCnoGrade200215121李勇男20CS192200215121李勇男20CS285200215121李勇男20CS388200215122刘晨女19CS290200215122刘晨女19CS380200215123王敏女18MANULLNULL200215125张立男19ISNULLNULL外连接(续)外连接(续)v左外连接列出左边关系(如本例Student)中所有的元组v右外连接列出右边关系中所有的元组四、复合条件连接四、复合条件连接v复合条件连接:
WHERE子句中含多个连接条件例37查询选修2号课程且成绩在90分以上的所有学生SELECTStudent.Sno,SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoAND/*连接谓词*/SC.Cno=2ANDSC.Grade90;
/*其他限定条件*/v执行过程:
先从SC中挑选出Cno=2并且Grade90的元组形成一个中间关系再和Student中满足连接条件的元组进行连接得到最终的结果关系复合条件连接(续)复合条件连接(续)例38查询每个学生的学号、姓名、选修的课程名及成绩SELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,Course/*多表连接多表连接*/WHEREStudent.Sno=SC.SnoandSC.Cno=Course.Cno;
嵌套查询嵌套查询v嵌套查询概述一个SELECT-FROM-WHERE语句称为一个查询块查询块将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询嵌套查询嵌套查询嵌套查询(续续)SELECTSname/*外层查询/父查询*/FROMStudentWHERESnoIN(SELECTSno/*内层查询/子查询*/FROMSCWHERECno=2);
嵌套查询嵌套查询(续续)子查询的限制不能使用ORDERBY子句层层嵌套方式反映了SQL语言的结构化有些嵌套查询可以用连接运算替代3.4.3嵌套查询嵌套查询一、带有IN谓词的子查询二、带有比较运算符的子查询三、带有ANY(SOME)或ALL谓词的子查询四、带有EXISTS谓词的子查询一、带有一、带有IN谓词的子查询谓词的子查询例39查询与“刘晨”在同一个系学习的学生。
此查询可以分步来完成学学号号Sno姓姓名名Sname性性别别Ssex年年龄龄Sage所所在在系系Sdept200215121200215122200215123200515125李勇李勇刘晨刘晨王敏王敏张立张立男男女女女女男男20191819CSCSMAIS确定“刘晨”所在系名SELECTSdeptFROMStudentWHERESname=刘晨;
结果为:
CS带有带有IN谓词的子查询(续)谓词的子查询(续)查找所有在CS系学习的学生。
SELECTSno,Sname,SdeptFROMStudentWHERESdept=CS;
SnoSnameSdept200215121李勇CS200215122刘晨CS带有带有IN谓词的子查询(续)谓词的子查询(续)将第一步查询嵌入到第二步查询的条件中SELECTSno,Sname,SdeptFROMStudentWHERESdeptIN(SELECTSdeptFROMStudentWHERESname=刘晨);
此查询为不相关子查询。
嵌套查询求解方法嵌套查询求解方法v不相关子查询:
子查询的查询条件不依赖于父查询n由里向外逐层处理。
即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。
带有带有IN谓词的子查询(续)谓词的子查询(续)用自身连接完成例39查询要求SELECTS1.Sno,S1.Sname,S1.SdeptFROMStudentS1,StudentS2WHERES1.Sdept=S2.SdeptANDS2.Sname=刘晨;
带有带有IN谓词的子查询(续)谓词的子查询(续)例40查询选修了课程名为“信息系统”的学生学号和姓名SELECTSno,SnameFROMStudentWHERESnoIN(SELECTSnoFROMSCWHERECnoIN(SELECTCnoFROMCourseWHERECname=信息系统);
首先在Course关系中找出“信息系统”的课程号,为3号然后在SC关系中找出选修了3号课程的学生学号最后在Student关系中取出Sno和Sname带有带有IN谓词的子查询(续)谓词的子查询(续)用连接查询实现例40SELECTSno,SnameFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDCourse.Cname=信息系统;
3.4.3嵌套查询嵌套查询一、带有IN谓词的子查询二、带有比较运算符的子查询三、带有ANY(SOME)或ALL谓词的子查询四、带有EXISTS谓词的子查询二、带有比较运算符的子查询二、带有比较运算符的子查询v当能确切知道内层查询返回单值时,可用比较运算符(,=,=,!
=或)。
v与ANY或ALL谓词配合使用带有比较运算符的子查询(续)带有比较运算符的子查询(续)例:
假设一个学生只可能在一个系学习,并且必须属于一个系,则在例39可以用=代替IN:
SELECTSno,Sname,SdeptFROMStudentWHERESdept=(SELECTSdeptFROMStudentWHERESname=刘晨);
带有比较运算符的子查询(续)带有比较运算符的子查询(续)例41找出每个学生超过他选修课程平均成绩的课程号。
SELECTSno,CnoFROMSCxWHEREGrade=(SELECTAVG(Grade)FROMSCyWHEREy.Sno=x.Sno)相关子查询相关子查询带有比较运算符的子查询(续)带有比较运算符的子查询(续)v可能的执行过程:
可能的执行过程:
1.从外层查询中取出SC的一个元组x,将元组x的Sno值(201215121)传送给内层查询。
SELECTAVG(Grade)FROMSCyWHEREy.Sno=201215121;
2.执行内层查询,得到值88(近似值),用该值代替内层查询,得到外层查询:
SELECTSno,CnoFROMSCxWHEREGrade=88;
带有比较运算符的子查询(续)带有比较运算符的子查询(续)3.执行这个查询,得到(201215121,1)(201215121,3)4.外层查询取出下一个元组重复做上述1至3步骤,直到外层的SC元组全部处理完毕。
结果为:
(201215121,1)(201215121,3)(201215122,2)嵌套查询求解方法(续)嵌套查询求解方法(续)v相关子查询:
子查询的查询条件依赖于父查询首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果表然后再取外层表的下一个元组重复这一过程,直至外层表全部检查完为止3.4.3嵌套查询嵌套查询一、带有IN谓词的子查询二、带有比较运算符的子查询三、带有ANY(SOME)或ALL谓词的子查询四、带有EXISTS谓词的子查询三、带有三、带有ANY(SOME)或)或ALL谓词的子查询谓词的子查询谓词语义ANY:
任意一个值ALL:
所有值带有带有ANY(SOME)或)或ALL谓词的子查询谓词的子查询(续)(续)需要配合使用比较运算符ANY大于子查询结果中的某个值ALL大于子查询结果中的所有值ANY小于子查询结果中的某个值=ANY大于等于子查询结果中的某个值=ALL大于等于子查询结果中的所有值=ANY小于等于子查询结果中的某个值=ALL小于等于子查询结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 关系 标准 语言 SQL 连接 查询