欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Windows Server数据库课件--第03章 SQL语言(4).ppt

    • 资源ID:67333167       资源大小:1.14MB        全文页数:111页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Windows Server数据库课件--第03章 SQL语言(4).ppt

    )1数据库系统概论数据库系统概论数据库系统概论数据库系统概论An Introduction to Database SystemAn Introduction to Database System第三章第三章第三章第三章 关系数据库标准语言关系数据库标准语言关系数据库标准语言关系数据库标准语言SQLSQLSQLSQL(4 4 4 4))2复习复习1.1.统计每人不及格的门数统计每人不及格的门数2.2.查询显示开设课程的名称、及格人数及最高分查询显示开设课程的名称、及格人数及最高分3.3.查询显示所有计算机系学生的姓名,以及他们查询显示所有计算机系学生的姓名,以及他们 所选课程和相应的成绩。所选课程和相应的成绩。)3复习复习单表查询单表查询单表查询单表查询SELECTSno,count(cno)FROMSCWHEREgrade=60groupbycno2.2.查询显示开设课程的名称、及格人数及最高分查询显示开设课程的名称、及格人数及最高分)53.3.显示全部计算机系学生的姓名,以及他们所显示全部计算机系学生的姓名,以及他们所选课程名和相应的成绩。选课程名和相应的成绩。复习复习连接查询连接查询连接查询连接查询SELECTFROMWHEREsname,cname,gradestudent,sc,o=oandstudent.sno=sc.snoandsdeptCS)6复习复习连接查询连接查询连接查询连接查询SELECT*FROMStudent,SC4.4.描述下列语句的含义。描述下列语句的含义。WHEREStudent.Sno=SC.Sno;Student.SnoStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeSELECTC1.Cno,C2.CpnoFROMCourseC1C1,CourseC2C2WHEREC1.Cpno=C2.Cno;)7学习目标学习目标了解外连接以及查询实现了解外连接以及查询实现掌握不相关子查询掌握不相关子查询(IN、比较运算符、比较运算符、ANY、ALL)掌握相关子查询掌握相关子查询(Exists谓词谓词)83.4 3.4 查查 询询 3.4.1 3.4.1 3.4.1 3.4.1 单表查询单表查询单表查询单表查询3.4.2 3.4.2 3.4.2 3.4.2 连接查询连接查询连接查询连接查询3.4.3 3.4.3 3.4.3 3.4.3 嵌套查询嵌套查询嵌套查询嵌套查询3.4.4 3.4.4 3.4.4 3.4.4 集合查询集合查询集合查询集合查询)9广义笛卡尔积查询广义笛卡尔积查询等值连接等值连接(含自然连接含自然连接)查询查询非等值连接查询非等值连接查询自身连接查询自身连接查询外连接查询外连接查询复合条件连接查询。复合条件连接查询。SQLSQL中连接查询的主要类型中连接查询的主要类型)104.4.外连接外连接(1)(1)外连接与普通连接的区别外连接与普通连接的区别普通连接操作只输出满足连接条件的元组普通连接操作只输出满足连接条件的元组外外连连接接操操作作以以指指定定表表为为连连接接主主体体,将将主主体体表中的全部记录输出显示表中的全部记录输出显示【例例】将每个学生的基本信息与其所选课程将每个学生的基本信息与其所选课程信息对应显示。信息对应显示。)11结果:结果:Student.SnoSnameSsexSageSdeptCnoGrade 0215121李勇李勇男男20CS1920215121李勇李勇男男20CS2850215121李勇李勇男男20CS3880215122刘晨刘晨女女19IS2900215122刘晨刘晨女女19IS3800215123王敏王敏女女18MA0215125张立张立男男19IS示例:示例:外连接外连接外连接外连接)12SELECT,FROM连接类型连接类型JOINJOINONONONWHEREINNERLEFTRIGHTFULLCROSS提示:提示:JOINJOIN的顺序和的顺序和ONON连接条件的顺序相反。连接条件的顺序相反。外连接外连接只能对两个表进行只能对两个表进行(2)(2)语法格式语法格式4.4.外连接外连接)130215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20181819SageCSISMAISSdeptSnoCnoGrade02151211920215121285021512628802151222900215122380 Student ScSELECTstudent.*,sc.*FROMstudentLEFTJOINscONstudent.sno=sc.snoRIGHTFULL例:查询所有学生的个人信息及选课信息。例:查询所有学生的个人信息及选课信息。4.4.外连接外连接)144.4.外连接外连接SELECTsname,gradeFROMstudentJOINscJOINcourseONo=oONstudent.sno=sc.snoWHEREcname=数学数学 例例 查询选修查询选修“数学数学”课程的学生的姓名和该课程的学生的姓名和该课程成绩。课程成绩。)15查询显示全部计算机系学生的姓名,以及他们查询显示全部计算机系学生的姓名,以及他们所选课程的门数。所选课程的门数。练习练习SELECTsname,count(cno)课程门数课程门数FROMstudentleftjoinscONstudent.sno=sc.snoWHEREsdeptCSGROUPBYSname)16特点:特点:特点:特点:WHEREWHEREWHEREWHERE子句中含多个条件。子句中含多个条件。子句中含多个条件。子句中含多个条件。例例3535查询选修查询选修2 2号课程且成绩在号课程且成绩在9090分以上所有学生分以上所有学生的学号、姓名。的学号、姓名。SELECTStudent.Sno,student.SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno=2ANDSC.Grade90;5.5.复合条件连接复合条件连接)17 特点:连接操作在两个以上的表之间进行特点:连接操作在两个以上的表之间进行特点:连接操作在两个以上的表之间进行特点:连接操作在两个以上的表之间进行 例例3636查询每个学生的学号、姓名、选修的课程名及查询每个学生的学号、姓名、选修的课程名及 成绩成绩.SELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoandSC.Cno=Course.Cno;6.6.多表连接多表连接)183.4 3.4 查查 询询 3.4.1 3.4.1 3.4.1 3.4.1 单表查询单表查询单表查询单表查询3.4.2 3.4.2 3.4.2 3.4.2 连接查询连接查询连接查询连接查询3.4.3 3.4.3 3.4.3 3.4.3 嵌套查询嵌套查询嵌套查询嵌套查询3.4.4 3.4.4 3.4.4 3.4.4 集合查询集合查询集合查询集合查询)193.4.3 3.4.3 嵌套查询嵌套查询n嵌套查询概述嵌套查询概述n嵌套查询分类及求解方法嵌套查询分类及求解方法n引出子查询的谓词引出子查询的谓词 )20(1)(1)一个一个SELECT-FROM-WHERE语句称为一个查询块语句称为一个查询块(2)(2)将一个查询块嵌套在另一个查询块的将一个查询块嵌套在另一个查询块的WHEREWHERE子句子句或或HAVINGHAVING短语短语条件中的查询称为嵌套查询。条件中的查询称为嵌套查询。1.1.嵌套查询概述嵌套查询概述例:例:SELECT SELECT SnameSname 外层查询外层查询/父查询父查询 FROM StudentFROM Student WHERE WHERE SnoSno IN IN (SELECT SELECT SELECT SELECT SnoSnoSnoSno 内层查询内层查询内层查询内层查询/子查询子查询子查询子查询 FROM SC FROM SC FROM SC FROM SC WHERE WHERE WHERE WHERE CnoCnoCnoCno=2);=2);=2);=2);)21嵌套查询概述嵌套查询概述(3)(3)说明:说明:子查询的限制子查询的限制 注意:子查询不能使用注意:子查询不能使用ORDER BYORDER BY子句子句 ORDER BYORDER BY只对查询最终结果的排序只对查询最终结果的排序层层嵌套方式反映了层层嵌套方式反映了SQLSQL语言的结构化语言的结构化 不同的不同的DBMSDBMS允许的最大嵌套层数不同允许的最大嵌套层数不同有些嵌套查询可以用连接查询替代有些嵌套查询可以用连接查询替代)223.4.3 3.4.3 嵌套查询嵌套查询n嵌套查询概述嵌套查询概述n嵌套查询分类及求解方法嵌套查询分类及求解方法n引出子查询的谓词引出子查询的谓词 )23(1)(1)不相关子查询:不相关子查询:子查询的查询条件不依赖于父查询子查询的查询条件不依赖于父查询 查询过程:由里向外逐层处理查询过程:由里向外逐层处理每个子查询在上一级查询处理之前先求解;每个子查询在上一级查询处理之前先求解;子查询的结果用于建立父查询的查找条件。子查询的结果用于建立父查询的查找条件。2.2.嵌套查询的分类嵌套查询的分类)24(1)(1)不相关子查询:不相关子查询:2.2.嵌套查询的分类嵌套查询的分类例:例:SELECT SELECT SnameSname 外层查询外层查询/父查询父查询 FROM StudentFROM Student WHERE WHERE SnoSno IN IN (SELECT SELECT SELECT SELECT SnoSnoSnoSno 内层查询内层查询内层查询内层查询/子查询子查询子查询子查询 FROM SC FROM SC FROM SC FROM SC WHERE WHERE WHERE WHERE CnoCnoCnoCno=2);=2);=2);=2);)25(2)(2)相关子查询:相关子查询:子查询的查询条件依赖于父查询子查询的查询条件依赖于父查询 查询过程查询过程:首先取外层查询表的第一个元组,根据它与首先取外层查询表的第一个元组,根据它与内层查询内层查询相关的属性值相关的属性值处理内层查询,若处理内层查询,若WHEREWHERE子句子句返回值为真返回值为真,则取此元组放入结果,则取此元组放入结果表;表;然后再取外层表的下一个元组。重复这一过然后再取外层表的下一个元组。重复这一过程,直至外层表全部检查完为止。程,直至外层表全部检查完为止。嵌套查询的分类嵌套查询的分类)263.4.3 3.4.3 嵌套查询嵌套查询n嵌套查询概述嵌套查询概述n嵌套查询分类及求解方法嵌套查询分类及求解方法n引出子查询的谓词引出子查询的谓词 )273.3.引出子查询的谓词引出子查询的谓词n带有带有ININ谓词的子查询谓词的子查询n带有带有比较运算符比较运算符的子查询的子查询n带有带有ANYANY或或ALLALL谓词的子查询谓词的子查询n带有带有EXISTSEXISTS谓词的子查询谓词的子查询)28例例39查询与刘晨在同一个系学习的学生。查询与刘晨在同一个系学习的学生。可以分步实现:可以分步实现:确定确定“刘晨刘晨”所在系名所在系名SELECTSdeptFROMStudentWHERESname=刘晨刘晨;1.1.带有带有ININ谓词的子查询谓词的子查询结果为:结果为:deptIS)29例例39查询与刘晨在同一个系学习的学生。查询与刘晨在同一个系学习的学生。查找所有在查找所有在ISIS系学习的学生系学习的学生SELECTSno,Sname,SdeptFROMStudentWHERESdept=IS;结果为:结果为:SnoSnameSdept0215122刘晨刘晨IS0215125张立张立IS1.1.带有带有ININ谓词的子查询谓词的子查询(续续)301.1.带有带有ININ谓词的子查询谓词的子查询(续续)方法方法方法方法1 1:将第一步查询嵌入到第二步查询的条件中将第一步查询嵌入到第二步查询的条件中SELECTSno,Sname,SdeptFROMStudentWHERESdeptIN(SELECTSdeptFROMStudentWHERESname=刘晨刘晨)构造嵌套查询构造嵌套查询说明:此查询为不相关子查询;说明:此查询为不相关子查询;DBMSDBMS求解该查询时也是分步去做的。求解该查询时也是分步去做的。)31方法方法方法方法2 2:也可用自身连接完成本查询要求也可用自身连接完成本查询要求也可用自身连接完成本查询要求也可用自身连接完成本查询要求S1S2SELECTS1.Sno,S1.Sname,S1.SdeptFROMStudentS1,StudentS2WHERES1.Sdept=S2.SdeptANDS2.Sname=刘晨刘晨;1.1.带有带有ININ谓词的子查询谓词的子查询(续续)9500195001950049500495002950029500395003SnoSno李勇李勇张立张立王敏王敏刘晨刘晨SnameSname男男男男女女女女SsexSsex2020191918181919SageSageCSCSISISMAMAISISSdeptSdept9500195001950049500495002950029500395003SnoSno李勇李勇张立张立王敏王敏刘晨刘晨SnameSname男男男男女女女女SsexSsex2020191918181919SageSageCSCSISISMAMAISISSdeptSdept)32 例例例例38383838查询选修了课程名为查询选修了课程名为查询选修了课程名为查询选修了课程名为“信息系统信息系统信息系统信息系统”的学生学号和姓的学生学号和姓的学生学号和姓的学生学号和姓名名名名1.1.带有带有ININ谓词的子查询谓词的子查询(续续)最后在最后在Student关系中取出关系中取出Sno和和SnameSELECTSno,SnameFROMStudentWHERESnoIN()SELECTCnoFROMCourseWHERECname=信息系统信息系统 首先在首先在CourseCourse关系中找出关系中找出“信息系统信息系统”的课程号的课程号结果:结果:3 3 然后在然后在SCSC关系中找出选修了关系中找出选修了3 3号课程的学生学号号课程的学生学号SELECTSnoFROMSCWHERECnoIN())33组合以后的代码:组合以后的代码:组合以后的代码:组合以后的代码:SELECTSno,SnameFROMStudentWHERESnoIN(SELECTSnoFROMSCWHERECnoIN(SELECTCnoFROMCourseWHERECname=信息系统信息系统);1.1.带有带有ININ谓词的子查询谓词的子查询(续续)34 结果:结果:SnoSno SnameSname 0215121 0215121 李勇李勇 0215122 0215122 刘晨刘晨 1.1.带有带有ININ谓词的子查询谓词的子查询(续续)另:本例也可用连接查询另:本例也可用连接查询另:本例也可用连接查询另:本例也可用连接查询SELECTSno,SnameFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDCourse.Cname=信息系统信息系统;)35是指父查询和子查询之间用比较运算符连接是指父查询和子查询之间用比较运算符连接的查询的查询适用范围:适用范围:当能确切知道当能确切知道内层查询内层查询返回单值返回单值时;时;内层查询内层查询返回值是集合,要返回值是集合,要与与ANYANY或或ALLALL谓谓词配合使用后。词配合使用后。2.2.带有比较运算符的子查询带有比较运算符的子查询)362.2.带有比较运算符的子查询带有比较运算符的子查询(续续)例:假设一个学生只可能在一个系学习,并且必须属例:假设一个学生只可能在一个系学习,并且必须属于一个系,则在例于一个系,则在例3737可以改写为可以改写为 :SELECTSno,Sname,SdeptFROMStudentWHERESdept=(SELECTSdeptFROMStudentWHERESname=刘晨刘晨);注意:注意:(1)子查询一定要用括号括起来子查询一定要用括号括起来)372.2.带有比较运算符的子查询带有比较运算符的子查询(续续)注意:注意:(2)子查询一定要跟在比较符之后。子查询一定要跟在比较符之后。SELECTSno,Sname,SdeptFROMStudentWHERE(SELECTSdeptFROMStudentWHERESname=刘晨刘晨)=SdeptSdept;)38谓词语义:谓词语义:ANYANY:表示任意一个值,:表示任意一个值,ALLALL:表示所有值:表示所有值3.3.带有带有ANYANY或或ALLALL谓词子查询谓词子查询)39需要配合使用比较运算符:需要配合使用比较运算符:(=)ANY (=)ANY 大于大于(大于等于大于等于)子查询结果中的某个值子查询结果中的某个值 (=)ALL (=)ALL 大于大于(大于等于大于等于)子查询结果中的所有值子查询结果中的所有值(=)ANY(=)ANY 小于小于(小于等于小于等于)子查询结果中的某个值子查询结果中的某个值 (=)ALL(=)ALL 小于小于(小于等于小于等于)子查询结果中的所有值子查询结果中的所有值=ANY=ANY 等于子查询结果中的某个值等于子查询结果中的某个值 =ALL=ALL 等于子查询结果中的所有值等于子查询结果中的所有值(通常无意义通常无意义)!=ANY!=ANY 不等于子查询结果中的某个值不等于子查询结果中的某个值!=ALL!=ALL 不等于子查询结果中的任何一个值不等于子查询结果中的任何一个值3.3.带有带有ANYANY或或ALLALL谓词子查询谓词子查询哪些无实际哪些无实际意义?意义?)40 例例4242查询其他系中比信息系任一个查询其他系中比信息系任一个(其中某一个其中某一个)学生学生年龄小的学生姓名和年龄。年龄小的学生姓名和年龄。SELECTSname,SageFROMStudentWHERESageSageANYANY(SELECTSageFROMStudentWHERESdept=IS)执行过程:执行过程:3.3.带有带有ANYANY或或ALLALL谓词子查询谓词子查询(续续)ANDANDSdeptSdeptISIS;0215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20181819SageCSISMAISSdept是哪个查询是哪个查询的条件?的条件?)41ANY和和ALL谓词有时可以用集函数实现谓词有时可以用集函数实现ANYANY、ALLALL与集函数的对应关系与集函数的对应关系=或或!=ANYALL3.3.带有带有ANYANY或或ALLALL谓词子查询谓词子查询(续续)IN-MAXMAXMIN=MIN-NOTINMINMINMAX=MAX)42用用ANY实现例实现例39如下:如下:SELECTSname,SageFROMStudentWHERESageANY(SELECTSageFROMStudentWHERESdept=IS)ANDSdeptIS;3.3.带有带有ANYANY或或ALLALL谓词子查询谓词子查询(续续)用集函数实现例用集函数实现例39如下:如下:SELECTSname,SageFROMStudentWHERESage(SELECTMAXMAX(Sage)FROMStudentWHERESdept=IS)ANDSdeptIS;)43 例例4343查询其他系中比查询其他系中比ISIS系所有学生年龄都小的学生姓系所有学生年龄都小的学生姓名及年龄。名及年龄。方法一:用方法一:用ALLALL谓词谓词SELECTSname,SageFROMStudentWHERESageALL(SELECTSageFROMStudentWHERESdept=IS)ANDSdeptIS;3.3.带有带有ANYANY或或ALLALL谓词子查询谓词子查询(续续)44 例例4040查询其他系中比查询其他系中比ISIS系所有学生年龄都小的学生姓系所有学生年龄都小的学生姓名及年龄。名及年龄。方法二:用集函数方法二:用集函数SELECTSname,SageFROMStudentWHERESage(SELECTMIN(Sage)FROMStudentWHERESdept=IS)ANDSdeptIS;3.3.带有带有ANYANY或或ALLALL谓词子查询谓词子查询(续续)用聚集函数实现子查询能够减少比较次数,用聚集函数实现子查询能够减少比较次数,提提提提高高高高查询查询效率效率效率效率 (CPU)(CPU)(CPU)(CPU)。比较两种方比较两种方法的效率法的效率)453.4.3 3.4.3 嵌套查询嵌套查询 n带有带有ININ谓词的子查询谓词的子查询n带有比较运算符的子查询带有比较运算符的子查询n带有带有ANYANY或或ALLALL谓词的子查询谓词的子查询n带有带有EXISTSEXISTS谓词的子查询谓词的子查询)464.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询(1)EXISTS谓词谓词(2)NOTEXISTS谓词谓词(3)不同形式的查询间的替换不同形式的查询间的替换(4)相关子查询的效率相关子查询的效率(5)用用EXISTS/NOTEXISTS实现全称量词实现全称量词(6)用用EXISTS/NOTEXISTS实现逻辑蕴函实现逻辑蕴函)474.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询(1)EXISTS(1)EXISTS谓词谓词相当于存在量词相当于存在量词相当于存在量词相当于存在量词 带有带有带有带有EXISTSEXISTSEXISTSEXISTS谓词的谓词的谓词的谓词的子查询不返回具体数据子查询不返回具体数据子查询不返回具体数据子查询不返回具体数据,只,只,只,只产生逻辑值产生逻辑值产生逻辑值产生逻辑值“TrueTrueTrueTrue”或或或或 “FalseFalseFalseFalse”。由由由由EXISTSEXISTSEXISTSEXISTS引出的子查询,其目标列表达式通常引出的子查询,其目标列表达式通常引出的子查询,其目标列表达式通常引出的子查询,其目标列表达式通常都用都用都用都用 *。(2)NOT EXISTS(2)NOT EXISTS(2)NOT EXISTS(2)NOT EXISTS谓词谓词谓词谓词)48 例例4444查询所有选修了查询所有选修了2 2号课程的学生姓名。号课程的学生姓名。4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询用带用带in谓词的嵌套查询谓词的嵌套查询SELECTSnameFROMStudentWHERESnoSnoinin(SELECTSnoFROMSCWHERECno=2)0215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20181819SageCSISMAISSdeptSnoCnoGrade02151211920215121285021512628802151222900215122380)49 例例4444查询所有选修了查询所有选修了2 2号课程的学生姓名。号课程的学生姓名。用带用带EXISTSEXISTS谓词的嵌套查询谓词的嵌套查询SELECTSnameFROMStudentWHEREEXISTSEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=2)4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询0215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20181819SageCSISMAISSdeptSnoCnoGrade02151211920215121285021512628802151222900215122380)50用带用带EXISTSEXISTS谓词的嵌套查询谓词的嵌套查询SELECTSnameFROMStudentWHEREEXISTSEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=2)4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询0215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20181819SageCSISMAISSdeptSnoCnoGrade02151211920215121285021512628802151222900215122380Sname李勇李勇外外内内n带带EXISTSEXISTS谓词查询的执行过程:谓词查询的执行过程:内内)514.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询0215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20181819SageCSISMAISSdeptSnoCnoGrade02151211920215121285021512628802151222900215122380外外Sname李勇李勇内内内内内内内内刘晨刘晨n带带EXISTSEXISTS谓词查询的执行过程:谓词查询的执行过程:用带用带EXISTSEXISTS谓词的嵌套查询谓词的嵌套查询SELECTSnameFROMStudentWHEREEXISTSEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=2)524.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询0215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20181819SageCSISMAISSdeptSnoCnoGrade02151211920215121285021512628802151222900215122380外外Sname李勇李勇内内内内内内内内刘晨刘晨内内内内n带带EXISTSEXISTS谓词查询的执行过程:谓词查询的执行过程:用带用带EXISTSEXISTS谓词的嵌套查询谓词的嵌套查询SELECTSnameFROMStudentWHEREEXISTSEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=2)53用带用带EXISTSEXISTS谓词的嵌套查询谓词的嵌套查询SELECTSnameFROMStudentWHEREEXISTSEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=2)4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询n带带EXISTSEXISTS谓词查询的执行过程:谓词查询的执行过程:0215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20181819SageCSISMAISSdeptSnoCnoGrade02151211920215121285021512628802151222900215122380外外Sname李勇李勇内内内内内内内内刘晨刘晨内内内内)54用带用带EXISTSEXISTS谓词的嵌套查询谓词的嵌套查询SELECTSnameFROMStudentWHEREEXISTSEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=2)4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询n带带EXISTSEXISTS谓词查询的执行过程:谓词查询的执行过程:0215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20181819SageCSISMAISSdeptSnoCnoGrade02151211920215121285021512628802151222900215122380Sname李勇李勇刘晨刘晨内内外外)55 例例4444查询所有选修了查询所有选修了2 2号课程的学生姓名。号课程的学生姓名。4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询本查询涉及本查询涉及StudentStudent和和SCSC关系。关系。在在StudentStudent中依次取每个元组的中依次取每个元组的SnoSno值,用此值,用此值去检查值去检查SCSC关系。关系。若若SCSC中存在这样的元组,其中存在这样的元组,其SnoSno值等于此值等于此Student.SnoStudent.Sno值,并且其值,并且其CnoCno=2=2,则取此则取此Student.SnameStudent.Sname送入结果关系送入结果关系,父查询指针下父查询指针下移,子查询回到首行。移,子查询回到首行。否则,子查询移到底部才返回否则,子查询移到底部才返回FalseFalse值值总结:对每一个父查询的元组,都要求解一遍子查询总结:对每一个父查询的元组,都要求解一遍子查询)56 例例4444查询所有选修了查询所有选修了2 2号课程的学生姓名。号课程的学生姓名。4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询用用ExistsSELECTSnameFROMStudentWHEREEXISTSEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=2)用用INSELECTSnameFROMStudentWHERESnoSnoinin(SELECTSnoFROMSCWHERECno=2)57 例例4444查询所有选修了查询所有选修了2 2号课程的学生姓名。号课程的学生姓名。4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询用连接查询用连接查询SELECTSnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno=2;)58 例例4545查询没有选修查询没有选修2 2号课程的学生姓名。号课程的学生姓名。SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=2);4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询该要求很难用连接查询实现该要求很难用连接查询实现)594.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询用嵌套查询用嵌套查询SELECTSnameFROMStudentWHERENOTEXISTSEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=2)0215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20181819SageCSISMAISSdeptSnoCnoGrade02151211920215121285021512628802151222900215122380Sname王敏王敏张立张立 例例4545查询没有选修查询没有选修2 2号课程的学生姓名。号课程的学生姓名。)604.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询(3)(3)不同形式的查询间的替换不同形式的查询间的替换一些一些一些一些带带EXISTSEXISTS或或NOT EXISTSNOT EXISTS谓词的子查询谓词的子查询不不能能被其他形式的子查询等价替换被其他形式的子查询等价替换所有所有带带ININ谓词、比较运算符、谓词、比较运算符、ANYANY和和ALLALL谓词谓词的子查询的子查询都能都能用带用带EXISTSEXISTS谓词的子查询等价谓词的子查询等价替换。替换。总结:总结:EXISTS谓词的表达能力高于其他谓词的谓词的表达能力高于其他谓词的表达形式的。表达形式的。)61 例例3737查询与刘晨在同一个系学习的学生,用带查询与刘晨在同一个系学习的学生,用带EXISTSEXISTS谓词的子查询替换:谓词的子查询替换:SELECTSno,Sname,SdeptFROMStudentS1WHEREEXISTS(SELECT*FROMStudentWHERESdept=S1.SdeptANDSname=刘晨刘晨)4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询)624.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询(4)(4)相关子查询的效率相关子查询的效率由于带由于带EXISTSEXISTS谓词的相关子查询只关心内谓词的相关子查询只关心内层查询是否有返回值,并不需要查具体值,层查询是否有返回值,并不需要查具体值,因此其效率并不一定低于其他查询。因此其效率并不一定低于其他查询。)634.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询(5)(5)用用EXISTS/NOT EXISTSEXISTS/NOT EXISTS实现全称量词实现全称量词(难点难点)SQLSQL语言中没有全称量词语言中没有全称量词 (For allFor all)可以把带有全称量词的谓词转换为等价的带可以把带有全称量词的谓词转换为等价的带有存在量词的谓词:有存在量词的谓词:(x)P x)P (x(x(P P)64例例43查询选修了全部课程的学生姓名。查询选修了全部课程的学生姓名。SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno)););4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询)654.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查询 Student ScSnoSnoCnoCnoGradeGrade95001950011 1929295001950012 2858595002950021 1888895002950022 2909095002950023 380809500195001950049500495003950039500295002SnoSno李勇李勇张立张立王敏王敏刘晨刘晨SnameSname男男男男女女女女SsexSsex2020191918181919SageSageCSCSISISMAMAISISSdeptSdept外外CnoCnoCnameCnameCpnoCpnoCcreditCcredit1 1数据库数据库5 54 42 2数学数学2 23 3信息系统信息系统1 14 4 Course中中内内SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno)66SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno)4.4.带有带有EXISTSEXISTS谓词的子查询谓词的子查

    注意事项

    本文(Windows Server数据库课件--第03章 SQL语言(4).ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开