已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL之EXISTS双重嵌套修正版,2,exists是用来判断是否存在的,当exists(查询)中的查询存在一个结果时则返回真,否则不存在一个结果时返回假。notexists则相反,查询结果都不存在时返回真,否则存在一个结果返回假。它所在的查询属于相关子查询,即子查询的查询条件依赖于外层父查询的某个属性值,处理过程一般为:取外层查询的第一个元组,根据它与内层查询相关的属性值处理内层查询,若where子句返回true,则将此元组放入结果表,然后取下一个元组,重复这个过程直到全部检查完为止。,3,即:exists做为where条件时,是先对where前的主查询进行查询,然后用主查询的结果(相关字段的值)一个一个的代入exists子查询的相关字段对子查询进行判断,如果有一个为真则输出当前这一条主查询的结果,如果子查询全部为假则不输出主查询的结果。,4,建立程序循环的概念,这是一个动态的查询过程。如FOR循环。流程为首先取出外层中的第一个元组,再执行内层查询,将外层表的第一元组代入,若内层查询为真,即有结果时,返回外层表中的第一元组,接着取出第二元组,执行相同的算法。一直到扫描完外层整表。,5,for(inti=0;iEOFout;i+)for(intj=0;jEOFin;j+),6,使用EXISTS,首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。而执行IN子查询时,首先执行子查询,并将获得的结果列表存放在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。因此,使用EXISTS比使用IN通常查询速度快。,7,1、查询选修了全部课程的学生姓名,8,思路一(in),首先学生的选课信息存在于SC表中,要想知道某个学生是否选修了全部课程,至少我们需要知道一共有几门课程。其次,学生选修了与否,我们又要扫描SC全表,统计出选修了所有课程的学生号最后在STUDENT表中根据学生号打出姓名,2019/12/14,9,可编辑,10,思路一(in),selectSnamefromstudentwhereSnoIN(selectSnofromSCgroupbySno/根据Sno分组,统计每个/学生选修了几门课程。如果等于course的/总数,就是我们要找的Snohavingcount(*)=(selectcount(*)fromcourse)/统计course中共有几门课程,11,思路二(EXISTS),引入:将题目换为查找学号为95003没有选修的课程思路:将已知学号95003代入把每一个课程代入(循环)将上述两个条件组合,一一用外层查询的课程(课程表的课程)与SC表(选课表)中的学号(95003)的对应课程进行比对,找不到匹配的(相同的)就是95003没有选修的课程,,12,因为选修的课程在选课表里有,在课程表里也有,就相互匹配,若课程表里有而选课表里没有的课程,就是该学生没有选修该课程了。selectCnamefromcoursewherenotexists/在SC中找不到与课程表匹配/的课程,提交true给course表,输出cname值(select*fromSCo=cnoandsno=95003)/在SC中匹配,13,思路二(EXISTS),换个题程:查找没有没有选修课程的学生姓名思路:学号未知,课程未知,说明有两个未知变量。应该有两个EXISTS。可以扫描student和course共有s*c中组合,将这些组合(s外循环c内循环)与SC的每一项进行匹配,注意s*c组合已经包含所有可能。如果某个学生在选课表中匹配的全部课程等于课程表,就说明某学生已经选修了全部课程。如果课程表的课程与某个学生在选课表中有没有匹配的课程,就说明课程表中不匹配的课程是某个学生没选修。没选修就为true提交给上一notexists循环。上一notexists循环就为false再提交给外层查询不选这个学生。如果课程表的课程与某个学生在SC表中的课程全部相同,就以false提交上一notexists,上一notexists就为true返回最外层查询,输出这个学生的姓名。,14,思路二(EXISTS),selectSnamefromstudentwhereNOTexists/(select*fromcoursewhereNOTexists/不存在匹配的提/交给course(select*fromSCwhereSno=student.snoandcno=Course.Cno)/代入两个未知变量),15,回头看,就是我们第一个引出的题目:选修了全部课程的学生姓名“选了全部课程的学生”变成“找这样的学生:不存在一门课他没选的,也就是没有课程他没有选举一反三,请写出被全部学生都选的课程被全部学生都不选的课程,16,2、查询至少选修了学生00002选修的全部课程的学生号码,它表示的语义为:不存在这样的课程y,学生00002选了,而学生x没有选,17,selectdistinctsnofromscscxwheren
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烧碱动设备安装施工设计方案
- 园林绿化工程苗木栽植规范方案
- 麻醉循环管理指南
- 三叉神经痛治疗指南(2026版)
- 防洪防汛施工方案
- 防止人才流失的薪酬设计方案
- 设计模式在软件开发中的应用概述
- 新华人寿荣欣世家终身寿险利益条款
- 东鹏饮料跟踪报告:Q1收入增长有望超预期短期“糖税”传闻扰动无碍长期逻辑
- 论大数据时代下企业管理模式创新
- 基于BIM的ZN花园14号住宅楼工程清单与招标控制价编制
- 政府采购保密管理制度范本(3篇)
- 建筑工地安全设施检查清单模板
- JJF2041-2023互感器二次压降及二次负荷现场测试方法
- 国有企业资产管理流程与制度汇编
- LNG气化站设备保养手册
- 煤矸石铺地面施工方案
- 基础计算机考试实操题及答案
- 2025年五类人员选拔考试试题及答案
- 压力储罐设计计算书
- 2025年疾病预防控制中心招聘考试笔试试题(含答案)
评论
0/150
提交评论