《数据库中SQL知识点重点章节总结与归纳很全的哦.doc》由会员分享,可在线阅读,更多相关《数据库中SQL知识点重点章节总结与归纳很全的哦.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库中SQL知识点重点章节总结与归纳很全的哦数据库中SQL知识点重点章节总结与归纳很全的哦第一章绪论1.基本概念(1)数据库;(2)数据库管理系统;(3)数据库系统;(4)实体;(5)属性;(6)码;(7)域;(8)实体型;(9)实体集;(10)联系(1:1)(1:n)(m:n)(11)现实世界、观念世界(信息世界)、数据世界2.数据管理技术的发展阶段人工管理阶段、文件系统阶段、数据库系统阶段和高级数据库技术阶段等各阶段的特点。3.数据库系统的特点(1)数据结构化(2)共享性高,冗余度低,易扩充(3)独立性高(4)由DBMS统一管理和控制4.DBMS的数据控制功能(1)数据的安全性保护(2)
2、数据的完整性检查(3)并发控制(4)数据库恢复5.数据模型的组成要素数据结构、数据操作、数据的约束条件6.最常用的数据模型层次、网状、关系、面向对象模型7.关系模型关系:一张表元组:表中的一行属性:表中的一列主码:表中的某个属性组,它可以唯一确定一个元组域:属性的取值范围分量:元组中的一个属性值关系模式:对关系的描述。表示为:关系名(属性1,属性2,属性n)8.关系数据模型优缺点(1)建立在严格的数学概念基础之上(2)概念单一(3)存取路径对用户透明9.数据库系统的三级模式结构内模式、外模式、模式二级映射10.数据库系统的组成本章重要概念(1)DB、DBMS和DBS的定义(2)数据管理技术的发
3、展阶段人工管理阶段、文件系统阶段、数据库系统阶段和高级数据库技术阶段等各阶段的特点。(3)数据描述概念设计、逻辑设计和物理设计等各阶段中数据描述的术语,概念设计中实体间二元联系的描述(1:1,1:N,M:N)。(4)数据模型数据模型的定义,两类数据模型,逻辑模型的形式定义,ER模型,层次模型、网状模型、关系模型和面向对象模型的数据结构以及联系的实现方式。(5)DB的体系结构三级结构,两级映象,两级数据独立性,体系结构各个层次中记录的联系。(6)DBMS(数据库管理系统)DBMS的工作模式、主要功能和模块组成。(7)DBS(数据库系统)DBS的组成,DBA,DBS的全局结构,DBS结构的分类。第
4、二章关系数据库1.基本概念关系,候选码,主码,主属性,非主属性,键2.完整性约束实体完整性、参照完整性、用户定义完整性3.笛卡儿积4.关系的性质列是同质的不同的列可出自同一个域,每一列为一个属性,不同的属性要有不同的属性名列的顺序无所谓任意两个元组不能完全相同行的顺序无所谓分量必须取原子值,即每一个分量必须是不可分的数据项5.关系的完整性实体完整性、参照完整性、用户定义的完整性6.关系代数(1)并、交、差、广义笛卡儿积(2)选择(3)投影(4)连接:等值连接、自然连接超键(SuperKey):在关系中能惟一标识元组的属性集称为关系模式的超键。候选键(CandidateKey):不含有多余属性的
5、超键称为候选键。也就是在候选键中,若要再删除属性,就不是键了。主键:(PrimaryKey):用户选作元组标识的一个侯选键称为主键。一般,如不加说明,则键是指主键。外键:(ForeignKey):如果关系R中属性K是其他模式的主键,那么K在模式R中称为外键例如:学生(学号,姓名,性别,驾驶证号)假定学生不重名超键:(学号,姓名),(学号,性别),(学号,姓名,性别),(姓名,性别)等等候选键:学号,姓名主键:你在数据库定义的时候,如果选择学号作为键,那么学号就是候选键外键:驾驶证号本章的重要概念(1)基本概念关系模型,关键键(主键和外键),关系的定义和性质,三类完整性规则,ER模型到关系模型的
6、转换规则。(2)关系代数五个基本操作,四个组合操作,七个扩充操作。第三章SQL语言1.SQL的特点综合统一高度非过程化面向集合的操作方式以同一种语法结构提供两种使用方式语言简洁,易学易用2.表(1)创建表createtablecreatetablestudent(Snochar(5)notnull,Snamechar(20)unique,Ssexchar(1),Sageint,Sdeptchar(15);(2)createtablecustomer(customer_namechar(20)notnull,customer_streetchar(30),customer_citychar(30
7、),primarykey(customer_name);(3)createtableaccount(account_numberchar(10)notnull,branch_namechar(15),balanceint,primarykey(account_number),foreignkey(branch_name)referencebranch(branch_name),check(balance=0);(2)修改表altertable(3)删除表droptable3.索引(1)创建索引createindex(2)删除dropindex4.查询select(1)格式(2)单表查询:选择列
8、、满足条件、排序、分组、集函数(3)连接查询(4)嵌套查询IN、比较、(ANY或ALL)、EXISTS(5)集合查询5.更新数据INSERT、UPDATE、DELETE6.视图(1)建立视图Createview(2)视图的作用7.数据控制(1)授权Grant(2)收回权限Revoke本章的重要概念(1)SQL数据库的体系结构,SQL的组成。(2)SQL的数据定义:SQL模式、基本表和索引的创建和撤销。(3)SQL的数据查询;SELECT语句的句法,SELECT语句的三种形式及各种限定,基本表的联接操作,SQL中的递归查询。(4)SQL的数据更新:插入、删除和修改语句。(5)视图的创建和撤销,对
9、视图更新操作的限制。(6)嵌入式SQL:预处理方式,使用规定,使用技术,卷游标,动态SQL语句。第四章关系数据库的规范化设计1.函数依赖、部分函数依赖、完全函数依赖、传递依赖2.1NF、2NF、3NF、BCNF模式的分解关系模式的分解需要遵循两个主要原则:1.满足无损连接分解的要求。2.既要满足无损连接分解的要求,又要满足保持函数依赖无损分解的测试方法算法4.3无损分解的测试的算法:如何判断是否是无损分解构造一张k行n列的表格,每列对应一个属性Aj(1jn),每行对应一个模式Ri(1ik)。如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上bij。把表格看成模式R的一个关系,反
10、复检查F中每个FD在表格中是否成立,若不成立,则修改表格中的值。修改方法如下:对于F中一个FDXY,如果表格中有两行在X值上相等,在Y值上不相等,那么把这两行在Y值上也改成相等的值。如果Y值中有一个是aj,那么另一个也改成aj;如果没有aj,那么用其中一个bij替换另一个值(尽量把下标ij改成较小的数)。一直到表格不能修改为止。(这个过程称为chase过程)若修改的最后一张表格中有一行是全a,即a1a2an,那么称相对于F是无损分解,否则称损失分解。无损分解的测试方法第一范式(1NF)1NF的定义如果一个关系模式R的所有属性都是不可分的基本数据项,则R1NF即不能以集合、序列等作为属性值。第一
11、范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库但是满足第一范式的关系模式并不一定是一个好的关系模式第二范式(2NF)(回顾)定义4.14对于FDWA,如果存在XW有XA成立,那么称WA是局部依赖(A局部依赖于W);否则称WA是完全依赖。完全依赖也称为“左部不可约依赖”。(回顾)定义4.15如果A是关系模式R的候选键中属性,那么称A是R的主属性;否则称A是R的非主属性。定义4.16如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是第二范式(2NF)的模式。如果数据库模式中每个关系模式都是2NF,则称数据库模式为2NF的数据库模式。第三范式(3NF
12、)(回顾)定义4.17如果XY,YA,且YX和AY,那么称XA是传递依赖(A传递依赖于X)。定义4.18如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,那么称R是第三范式(3NF)的模式。如果数据库模式中每个关系模式都是3NF,则称其为3NF的数据库模式。将2NF的关系模式规范化为3NF的关系模式,其方法是消除2NF的关系模式中非键属性对键的传递依赖。本章重要概念(1)关系模式的冗余和异常问题。(2)FD的定义、逻辑蕴涵、闭包、推理规则、与关键码的联系;平凡的FD;属性集的闭包;推理规则的正确性和完备性;FD集的等价。(3)无损分解的定义、性质、测试;保持依赖集的分解。(4)关
13、系模式的范式:1NF,2NF,3NF,BCNF。分解成2NF、3NF模式集的算法。第五章数据库设计1.数据库设计的六个阶段需求分析、概念结构设计、逻辑结构设计物理结构设计、数据库实施、数据库运行和维护2.需求分析:数据字典:数据项、数据结构、数据流、数据存储和处理过程3.概念结构设计(1)是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型(2)E-R图:基本表示方法4.逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化5.物理设计(1)为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)6.实施阶段设计
14、人员运用DBMS提供的数据语言及其宿主语言,建立数据库,编制与调试程序,组织数据入库,并进行试运行7.运行和维护阶段数据库应用系统经过试运行后即可投入正式运行。重构,重组织本章重要概念(1)DBS生存期及其7个阶段的任务和工作,DBD过程的输入和输出。(2)概念设计的重要性、主要步骤。逻辑设计阶段的主要步骤。(3)ER模型的基本元素,属性的分类,联系的元数、连通词、基数。采用ER方法的概念设计步骤。(4)ER模型到关系模型的转换规则。采用ER方法的逻辑设计步骤。(5)ER模型的扩充:弱实体,超类和子类。第七章系统实现技术1.事务(1)概念(2)特性:原子性、一致性、隔离性、持续性2.故障种类事
15、务内部的故障、系统故障、介质故障3.恢复的实现技术(1)数据转储:转储状态、转储方式(2)日志:基本格式和内容、日志的作用、登记日志文件并发控制1.问题:丢失修改、不可重复读、读“脏”数据2.封锁共享锁、排它锁3.一级封锁协议(1)事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放(2)解决的问题:防止丢失修改4.二级封锁协议(1)一级封锁协议加上事务T在读取数据R前必须先对其加S锁,读完后即可释放S锁(2)解决的问题:防止丢失修改、防止读“脏”数据5.三级封锁协议(1)一级封锁协议加上事务T在读取数据R前必须先对其加S锁,直到事务结束才释放。(2)解决的问题:防止丢失修改、防止读“脏
16、”数据、防止不可重复读6.活锁和死锁(1)死锁的预防:一次封锁法,顺序封锁法(2)死锁的诊断:超时法,等待图法(3)死锁的解除:选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其它事务得以继续进行下去。本章重要概念事务的定义,COMMIT和ROLLBACK的语义,事务的ACID性质恢复的定义、基本原则和实现方法,故障的类型,检查点技术,REDO和UNDO操作,运行记录优先原则。并发操作带来的三个问题,X锁、S锁、活锁、饿死和死锁完整性的定义,完整性子系统的功能,完整性规则的组成。SQL中的三大类完整性约束,SQL3中的触发器技术。安全性的定义、级别,权限,SQL中的安全性机
17、制,几种常用的安全性措施,自然环境的安全性。扩展阅读:数据库中SQL查询语句习题含的答案查询问题:设教学数据库Education有三个关系:学生关系S(SNO,SNAME,AGE,SEX,SDEPT);(3)检索选修课程名为“DS”的学生学号与姓名学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME)(1)检索计算机系的全体学生的学号,姓名和性别;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS”的学生学号与姓名;(4)检索选修课程号为C2或C4的学生学号;(5)检索至少选修课程号为C2和C4的学生学号;(6)检索不学C2课
18、的学生姓名和年龄;(7)检索学习全部课程的学生姓名;(8)查询所学课程包含学生S3所学课程的学生学号。(1)检索计算机系的全体学生的学号,姓名和性别;SELECTSno,Sname,SexFROMSWHERESdept=CS;(2)检索学习课程号为C2的学生学号与姓名;1.SELECTSno,SnameFROMS2.SELECTS.Sno,SnameWHERESnoINFROMS,SCWHERES.Sno=SC.Sno(SELECTSnoFROMSCANDSC.Cno=C2;WHERECno=C2)本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C表中,但S和C表没有直接联系,必须通过S
19、C表建立它们二者的联系。CSCS基本思路:(1)首先在C表中找出“DS”课程的课程号Cno;(2)然后在SC表中找出Cno等于第一步给出的Cno集合中的某个元素Cno;(3)最后在S关系中选出Sno等于第二步中Sno集合中某个元素的元组,取出Sno和Sname送入结果表列。SELECTSno,SnameFROMSWHERESnoIN(SELECTSnoFROMSCWHERECnoIN(SELECTCnoFROMCWHERECname=DS);(4)检索选修课程号为C2或C4的学生学号;SELECTSnoFROMSCWHERECno=C2ORCno=C4;(5)检索至少选修课程号为C2和C4的学
20、生学号;SELECTSnoFROMSCX,SCYWHEREX.Sno=Y.SnoANDX.Cno=C2ANDY.Cno=C4;(6)检索不学C2课的学生姓名和年龄;1.SELECTSname2.SELECTSnameFROMSFROMSWHERESnoNOTINWHERENOTEXISTS(SELECTSno(SELECT*FROMSCFROMSCWHERECno=C2);WHERESC.Sno=S.SnoANDCno=C2);(7)检索学习全部课程的学生姓名;在表S中找学生,要求这个学生学了全部课程。换言之,在S表中找学生,在C中不存在一门课程,这个学生没有学。SELECTSnameFROM
21、SWHERENOTEXISTS(SELECT*FROMCWHERENOTEXISTS(SELECT*FROMSCWHERESC.Sno=S.SnoANDSC.Cno=C.Cno));(8)查询所学课程包含学生S3所学课程的学生学号。分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。SELECTDISTINCTSnoFROMSCASXWHERENOTEXISTS(SELECT*FROMSCASYWHEREY.Sno=S3ANDNOTEXISTS(SELECT*FROMSCASZWHEREZ.Sno=X.SnoANDZ.Cno=Y.Cno));设教学数据库Education有三个关系:学
22、生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME)查询问题:1:查所有年龄在20岁以下的学生姓名及年龄。2:查考试成绩有不及格的学生的学号3:查所年龄在20至23岁之间的学生姓名、系别及年龄。4:查计算机系、数学系、信息系的学生姓名、性别。5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别6:查所有姓“刘”的学生的姓名、学号和性别。7:查姓“上官”且全名为3个汉字的学生姓名。8:查所有不姓“张”的学生的姓名。9:查DB_Design课程的课程号。10:查缺考的学生的学号和课程号
23、。11:查年龄为空值的学生的学号和姓名。12:查计算机系20岁以下的学生的学号和姓名。13:查计算机系、数学系、信息系的学生姓名、性别。14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。16:查询学生总人数。17:查询选修了课程的学生人数。18:计算选修了C1课程的学生平均成绩。19:查询学习C3课程的学生最高分数。20:查询各个课程号与相应的选课人数。21:查询计算机系选修了3门以上课程的学生的学号。22:求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数
24、相同按年龄降序排列。23:查询每个学生及其选修课程的情况。24:查询选修了C2课程且成绩在90分以上的所有学生。25:查询每个学生选修的课程名及其成绩。26:统计每一年龄选修课程的学生人数。27:查询选修了C2课程的学生姓名。28:查询与“张三”在同一个系学习的学生学号、姓名和系别。29:查询选修课程名为“数据库”的学生学号和姓名。30:查询与“张三”在同一个系学习的学生学号、姓名和系别。31:查询选修课程名为“数据库”的学生学号和姓名。32:查询选修了C2课程的学生姓名。33:查询所有未选修C2课程的学生姓名。34:查询与“张三”在同一个系学习的学生学号、姓名和系别。35:查询选修了全部课程
25、的学生姓名。36:查询所学课程包含学生S3所学课程的学生学号(1)比较例1:查所有年龄在20岁以下的学生姓名及年龄。SELECTSname,SageFROMSWHERESage=20)例2:查考试成绩有不及格的学生的学号SELECTDISTINCTSnoFROMSCWHEREgradeFROMSWHERESageBETWEEN20AND23;(3)确定集合例4:查计算机系、数学系、信息系的学生姓名、性别。SELECTSname,SsexFROMSWHERESdeptIN(CS,IS,MATH);例5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别SELECTSname,SsexFROM
26、SWHERESdeptNOTIN(CS,IS,MATH);(4)字符匹配例6:查所有姓“刘”的学生的姓名、学号和性别。SELECTSname,Sno,SsexFROMSWHERESnameLIKE刘%;例7:查姓“上官”且全名为3个汉字的学生姓名。SELECTSnameFROMSWHERESnameLIKE上官_;例8:查所有不姓“张”的学生的姓名。SELECTSname,Sno,SsexFROMSWHERESnameNOTLIKE张%;例9:查DB_Design课程的课程号。SELECTCnoFROMCWHERECnameLIKEDB_DesignESCAPE;(5)涉及空值的查询例10:查
27、缺考的学生的学号和课程号。SELECTSno,CnoFROMSCWHEREGradeISNULL;(不能用=代替)有成绩的WHEREGradeISNOTNULLL;例11:查年龄为空值的学生的学号和姓名。SELECTSno,SnameFROMSWHERESageISNULL;(6)多重条件查询例12:查计算机系20岁以下的学生的学号和姓名。SELECTSno,SnameFROMSWHERESdept=CSANDSage例16:查询学生总人数。SELECTCOUNT(*)FROMS例17:查询选修了课程的学生人数。SELECTCOUNT(DISTINCTSno)FROMSC例18:计算选修了C1
28、课程的学生平均成绩。SELECTAVG(Grade)FROMSCWHERECno=C1;例19:查询学习C3课程的学生最高分数。SELECTMAX(Grade)FROMSCWHERECno=C3;5、对查询结果分组例20:查询各个课程号与相应的选课人数。SELECTCno,COUNT(Sno)FROMSCGROUPBYCno;该SELECT语句对SC表按Cno的取值进行分组,所有具有相同Cno值的元组为一组,然后对每一组作用聚合函数COUNT以求得该组的学生人数。如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件组,则可以使用HAVING短语指定筛选条件。例21:查询计算机系
29、选修了3门以上课程的学生的学号。SELECTSnoFROMSCWHERESdept=CSGROUPBYSnoHAVINGCOUNT(*)3;WHERE子句与HAVING短语的根本区别在于作用对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。例22:求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。SELECTSage,COUNT(Sno)FROMSWHERESsex=MGROUPBYSageHAVINGCOUNT(*)50ORDERBY2,SageDESC;二、多表查询1、
30、联接查询例23:查询每个学生及其选修课程的情况。SELECTS.Sno,Sname,Sage,Ssex,Sdept,Cno,GradeFROMS,SCWHERES.Sno=SC.Sno;例24:查询选修了C2课程且成绩在90分以上的所有学生。SELECTS.Sno,SnameFROMS,SCWHERES.Sno=SC.SnoANDSC.Cno=C2ANDSC.Grade90;例25:查询每个学生选修的课程名及其成绩。SELECTS.Sno,Sname,Cname,SC.GradeFROMS,SC,CWHERES.Sno=SC.SnoANDSC.Cno=C.Cno例26:统计每一年龄选修课程的学
31、生人数。SELECTSage,COUNT(DISTINCTS.Sno)FROMS,SCWHERES.Sno=SC.SnoGROUPBYS;由于要统计每一个年龄的学生人数,因此要把满足WHERE子句中条件的查询结果按年龄分组,在每一组中的学生年龄相同。此时的SELECT子句应对每一组分开进行操作,在每一组中,年龄只有一个值,统计的人数是这一组中的学生人数。1、嵌套查询(1)带有IN谓词的子查询指父查询与子查询之间用IN进行联接,判断某个属性列值是否在子查询的结果中。例27:查询选修了C2课程的学生姓名。SELECTSnameFROMSWHERESnoIN(SELECTSnoFROMSCWHERE
32、Cno=C2);例28:查询与“张三”在同一个系学习的学生学号、姓名和系别。分析:(1)确定“张三”所在的系;(2)查找所有在X系学习的学生。SELECTSdeptFROMSWHERESname=张三;SELECTSno,Sname,SdeptFROMSWHERESdept=X把第一步查询嵌入到第二步查询中,用以构造第二步FROMSASS1,SASS2查询的条件。WHERES1.Sdept=S2.SdeptANDS2.Sname=张三SELECTSno,Sname,SdeptFROMSWHERESdeptIN(SELECTSdeptFROMSWHERESname=张三);例29:查询选修课程名
33、为“数据库”的学生学号和姓名。本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C表中,但S和C表没有直接联系,必须通过SC表建立它们二者的联系。CSCS基本思路:(1)首先在C表中找出“DB”课程的课程号Cno;(2)然后在SC表中找出Cno等于第一步给出的Cno集合中的某个元素Cno;(3)最后在S关系中选出Sno等于第二步中Sno集合中某个元素的元组,取出Sno和Sname送入结果表列。SELECTSno,SnameFROMSWHERESnoIN(SELECTSnoFROMSCWHERECnoIN(SELECTCnoFROMCWHERECname=DB);联接查询方式(2)带有比较运
34、算符的子查询例30:查询与“张三”在同一个系学习的学生学号、姓名和系别。SELECTSno,Sname,SdeptFROMSWHERESdept=(SELECTSdeptFROMSWHERESname=张三);例31:查询选修课程名为“数据库”的学生学号和姓名。SELECTSno,SnameFROMSWHERESnoIN(SELECTSnoFROMSCWHERECno=(SELECTCnoFROMCWHERECname=DB);(3)带有EXISTS谓词的子查询(1)带有EXISTS谓词的子查询不返回任何实际数据,它只产生逻辑值。例32:查询选修了C2课程的学生姓名。1.SELECTSname
35、FROMSWHERESnoIN(SELECTSnoFROMSCWHERECno=C2);2.SELECTSnameFROMSWHEREEXISTS(SELECT*FROMSCWHERESC.Sno=S.SnoANDCno=C2);例33:查询所有未选修C2课程的学生姓名。SELECTSnameFROMSWHERENOTEXISTS(SELECT*FROMSCWHERESC.Sno=S.SnoANDCno=C2);NOTEXISTS实际上是一种内、外层互相关的嵌套查询,只有当内层引用了外层的值,这种查询才有意义。例34:查询与“张三”在同一个系学习的学生学号、姓名和系别。SELECTSno,Sn
36、ame,SdeptFROMSASS1WHEREEXISTS(SELECT*FROMSASS2WHERES2.Sdept=S1.SdeptANDS2.Sname=张三);相关子查询例35:查询选修了全部课程的学生姓名。在表S中找学生,要求这个学生学了全部课程。换言之,在S表中找学生,在C中不存在一门课程,这个学生没有学。SELECTSnameFROMSWHERENOTEXISTS(SELECT*FROMCWHERENOTEXISTS(SELECT*FROMSCWHERESC.Sno=S.SnoANDSC.Cno=C.Cno));例36:查询所学课程包含学生S3所学课程的学生学号分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。SELECTDISTINCTSnoFROMSCASXWHERENOTEXISTS(SELECT*FROMSCASYWHEREY.Sno=S3ANDNOTEXISTS(SELECT*FROMSCASZWHEREZ.Sno=X.SnoANDZ.Cno=Y.Cno));第 16 页 共 16 页