数据库中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)数据的完整性检查(3)并发控制(4)数据库恢复5.数据模型的组成要素
数据结构、数据操作、数据的约束条件6.最常用的数据模型
层次、网状、关系、面向对象模型7.关系模型
关系:一张表元组:表中的一行属性:表中的一列
主码:表中的某个属性组,它可以唯一确定一个元组域:属性的取值范围
分量:元组中的一个属性值关系模式:对关系的描述。
表示为:关系名(属性1,属性2,…属性n)8.关系数据模型优缺点
(1)建立在严格的数学概念基础之上(2)概念单一
(3)存取路径对用户透明9.数据库系统的三级模式结构内模式、外模式、模式二级映射
10.数据库系统的组成本章重要概念
(1)DB、DBMS和DBS的定义(2)数据管理技术的发展阶段人工管理阶段、文件系统阶段、数据库系统阶段和高级数据库技术阶段等各阶段的特点。(3)数据描述概念设计、逻辑设计和物理设计等各阶段中数据描述的术语,概念设计中实体间二元联系的描述(1:1,1:N,M:N)。(4)数据模型数据模型的定义,两类数据模型,逻辑模型的形式定义,ER模型,层次模型、网状模型、关系模型和面向对象模型的数据结构以及联系的实现方式。(5)DB的体系结构三级结构,两级映象,两级数据独立性,体系结构各个层次中记录的联系。(6)DBMS(数据库管理系统)DBMS的工作模式、主要功能和模块组成。
(7)DBS(数据库系统)DBS的组成,DBA,DBS的全局结构,DBS结构的分类。
第二章关系数据库
1.基本概念
关系,候选码,主码,主属性,非主属性,键2.完整性约束
实体完整性、参照完整性、用户定义完整性3.笛卡儿积4.关系的性质
列是同质的
不同的列可出自同一个域,每一列为一个属性,不同的属性要有不同的属性
名列的顺序无所谓
任意两个元组不能完全相同行的顺序无所谓
分量必须取原子值,即每一个分量必须是不可分的数据项
5.关系的完整性
实体完整性、参照完整性、用户定义的完整性6.关系代数
(1)并、交、差、广义笛卡儿积(2)选择(3)投影
(4)连接:等值连接、自然连接
超键(SuperKey):在关系中能惟一标识元组的属性集称为关系模式的超键。
候选键(CandidateKey):不含有多余属性的超键称为候选键。也就是在候选键中,若要再删除属性,就不是键了。
主键:(PrimaryKey):用户选作元组标识的一个侯选键称为主键。一般,如不加说明,则键是指主键。
外键:(ForeignKey):如果关系R中属性K是其他模式的主键,那么K在模式R中称为外键
例如:学生(学号,姓名,性别,驾驶证号)假定学生不重名超键:(学号,姓名),(学号,性别),(学号,姓名,性别),(姓名,性别)等等候选键:学号,姓名
主键:你在数据库定义的时候,如果选择学号作为键,那么学号就是候选键外键:驾驶证号本章的重要概念(1)基本概念关系模型,关键键(主键和外键),关系的定义和性质,三类完整性规则,ER模型到关系模型的转换规则。(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),
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)单表查询:选择列、满足条件、排序、分组、集函数(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)视图的创建和撤销,对视图更新操作的限制。
(6)嵌入式SQL:预处理方式,使用规定,使用技术,卷游标,动态SQL语句。
第四章关系数据库的规范化设计
1.函数依赖、部分函数依赖、完全函数依赖、传递依赖2.1NF、2NF、3NF、BCNF模式的分解
关系模式的分解需要遵循两个主要原则:
1.满足无损连接分解的要求。
2.既要满足无损连接分解的要求,又要满足保持函数依赖无损分解的测试方法
算法4.3无损分解的测试的算法:如何判断是否是无损分解构造一张k行n列的表格,每列对应一个属性Aj(1≤j≤n),每行对应一个模式Ri(1≤i≤k)。如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上bij。
把表格看成模式R的一个关系,反复检查F中每个FD在表格中是否成立,若不成立,则修改表格中的值。修改方法如下:对于F中一个FDX→Y,如果表格中有两行在X值上相等,在Y值上不相等,那么把这两行在Y值上也改成相等的值。如果Y值中有一个是aj,那么另一个也改成aj;如果没有aj,那么用其中一个bij替换另一个值(尽量把下标ij改成较小的数)。一直到表格不能修改为止。(这个过程称为chase过程)
若修改的最后一张表格中有一行是全a,即a1a2…an,那么称ρ相对于F是无损分解,否则称损失分解。无损分解的测试方法第一范式(1NF)1NF的定义如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF即不能以集合、序列等作为属性值。第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库但是满足第一范式的关系模式并不一定是一个好的关系模式第二范式(2NF)
(回顾)定义4.14对于FDW→A,如果存在XW有X→A成立,那么称W→A是局部依赖(A局部依赖于W);否则称W→A是完全依赖。完全依赖也称为“左部不可约依赖”。(回顾)定义4.15如果A是关系模式R的候选键中属性,那么称A是R的主属性;否则称A是R的非主属性。
定义4.16如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是第二范式(2NF)的模式。如果数据库模式中每个关系模式都是2NF,则称数据库模式为2NF的数据库模式。第三范式(3NF)
(回顾)定义4.17如果X→Y,Y→A,且Y→X和A∈Y,那么称X→A是传递依赖(A传递依赖于X)。
定义4.18如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,那么称R是第三范式(3NF)的模式。如果数据库模式中每个关系模式都是3NF,则称其为3NF的数据库模式。
将2NF的关系模式规范化为3NF的关系模式,其方法是消除2NF的关系
模式中非键属性对键的传递依赖。
本章重要概念
(1)关系模式的冗余和异常问题。
(2)FD的定义、逻辑蕴涵、闭包、推理规则、与关键码的联系;平凡的FD;属性集的闭包;推理规则的正确性和完备性;FD集的等价。
(3)无损分解的定义、性质、测试;保持依赖集的分解。
(4)关系模式的范式:1NF,2NF,3NF,BCNF。分解成2NF、3NF模式集的算法。
第五章数据库设计
1.数据库设计的六个阶段
需求分析、概念结构设计、逻辑结构设计物理结构设计、数据库实施、数据库运行和维护2.需求分析:
数据字典:数据项、数据结构、数据流、数据存储和处理过程3.概念结构设计
(1)是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型(2)E-R图:基本表示方法4.逻辑结构设计
是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化5.物理设计
(1)为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)6.实施阶段
设计人员运用DBMS提供的数据语言及其宿主语言,建立数据库,编制与调试程序,组织数据入库,并进行试运行7.运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。重构,重组织本章重要概念
(1)DBS生存期及其7个阶段的任务和工作,DBD过程的输入和输出。(2)概念设计的重要性、主要步骤。逻辑设计阶段的主要步骤。
(3)ER模型的基本元素,属性的分类,联系的元数、连通词、基数。采用ER方法的概念设计步骤。
(4)ER模型到关系模型的转换规则。采用ER方法的逻辑设计步骤。(5)ER模型的扩充:弱实体,超类和子类。
第七章系统实现技术
1.事务(1)概念
(2)特性:原子性、一致性、隔离性、持续性2.故障种类事务
内部的故障、系统故障、介质故障3.恢复的实现技术
(1)数据转储:转储状态、转储方式
(2)日志:基本格式和内容、日志的作用、登记日志文件并发控制
1.问题:丢失修改、不可重复读、读“脏”数据2.封锁共享锁、排它锁3.一级封锁协议
(1)事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放(2)解决的问题:防止丢失修改4.二级封锁协议
(1)一级封锁协议加上事务T在读取数据R前必须先对其加S锁,读完后即可释放S锁(2)解决的问题:防止丢失修改、防止读“脏”数据5.三级封锁协议
(1)一级封锁协议加上事务T在读取数据R前必须先对其加S锁,直到事务结束才释放。(2)解决的问题:防止丢失修改、防止读“脏”数据、防止不可重复读6.活锁和死锁
(1)死锁的预防:一次封锁法,顺序封锁法(2)死锁的诊断:超时法,等待图法(3)死锁的解除:选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其它事务得以继续进行下去。本章重要概念
事务的定义,COMMIT和ROLLBACK的语义,事务的ACID性质
恢复的定义、基本原则和实现方法,故障的类型,检查点技术,REDO和UNDO操作,运行记录优先原则。
并发操作带来的三个问题,X锁、S锁、活锁、饿死和死锁
完整性的定义,完整性子系统的功能,完整性规则的组成。SQL中的三大类完整性约束,SQL3中的触发器技术。
安全性的定义、级别,权限,SQL中的安全性机制,几种常用的安全性措施,自然环境的安全性。
扩展阅读:数据库中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课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;
(8)查询所学课程包含学生S3所学课程的学生学号。
(1)检索计算机系的全体学生的学号,姓名和性别;SELECTSno,Sname,SexFROMS
WHERESdept=’CS’;
(2)检索学习课程号为C2的学生学号与姓名;1.SELECTSno,SnameFROMS2.SELECTS.Sno,SnameWHERESnoINFROMS,SCWHERES.Sno=SC.Sno(SELECTSnoFROMSCANDSC.Cno=‘C2’;WHERECno=‘C2’)
本查询涉及到学号、姓名和课程名三个属性,分别
存放在S和C表中,但S和C表没有直接联系,必须通过SC表建立它们二者的联系。C→SC→S基本思路:
(1)首先在C表中找出“DS”课程的课程号Cno;
(2)然后在SC表中找出Cno等于第一步给出的Cno集合中的某个元素Cno;
(3)最后在S关系中选出Sno等于第二步中Sno集合中某个元素的元组,取出Sno和Sname送入结果表列。
SELECTSno,SnameFROMS
WHERESnoIN(SELECTSnoFROMSC
WHERECnoIN(SELECTCnoFROMC
WHERECname=‘DS’));
(4)检索选修课程号为C2或C4的学生学号;SELECTSnoFROMSC
WHERECno=‘C2’ORCno=‘C4’;
(5)检索至少选修课程号为C2和C4的学生学号;SELECTSno
FROMSCX,SCY
WHEREX.Sno=Y.SnoANDX.Cno=‘C2’ANDY.Cno=‘C4’;
(6)检索不学C2课的学生姓名和年龄;
1.SELECTSname2.SELECTSnameFROMSFROMSWHERESnoNOTINWHERENOTEXISTS(SELECTSno(SELECT*FROMSCFROMSCWHERECno=‘C2’);WHERESC.Sno=S.SnoANDCno=‘C2’);
(7)检索学习全部课程的学生姓名;
在表S中找学生,要求这个学生学了全部课程。换言之,在S表中找学生,在C中不存在一门课程,这个学生没有学。
SELECTSnameFROMS
WHERENOTEXISTS(SELECT*FROMC
WHERENOTEXISTS(SELECT*FROMSCWHERESC.Sno=S.SnoAND
SC.Cno=C.Cno));
(8)查询所学课程包含学生S3所学课程的学生学号。分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。
SELECTDISTINCTSnoFROMSCASXWHERENOTEXISTS(SELECT*
FROMSCASY
WHEREY.Sno=‘S3’ANDNOTEXISTS(SELECT*
FROMSCASZWHEREZ.Sno=X.SnoANDZ.Cno=Y.Cno));
设教学数据库Education有三个关系:
学生关系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:查缺考的学生的学号和课程号。11:查年龄为空值的学生的学号和姓名。12:查计算机系20岁以下的学生的学号和姓名。13:查计算机系、数学系、信息系的学生姓名、性别。14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。
15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。16:查询学生总人数。
17:查询选修了课程的学生人数。18:计算选修了C1课程的学生平均成绩。19:查询学习C3课程的学生最高分数。20:查询各个课程号与相应的选课人数。
21:查询计算机系选修了3门以上课程的学生的学号。22:求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。
23:查询每个学生及其选修课程的情况。
24:查询选修了C2课程且成绩在90分以上的所有学生。
25:查询每个学生选修的课程名及其成绩。26:统计每一年龄选修课程的学生人数。27:查询选修了C2课程的学生姓名。
28:查询与“张三”在同一个系学习的学生学号、姓名和系别。
29:查询选修课程名为“数据库”的学生学号和姓名。30:查询与“张三”在同一个系学习的学生学号、姓名和系别。
31:查询选修课程名为“数据库”的学生学号和姓名。32:查询选修了C2课程的学生姓名。33:查询所有未选修C2课程的学生姓名。
34:查询与“张三”在同一个系学习的学生学号、姓名和系别。
35:查询选修了全部课程的学生姓名。
36:查询所学课程包含学生S3所学课程的学生学号(1)比较
例1:查所有年龄在20岁以下的学生姓名及年龄。SELECTSname,Sage
FROMS
WHERESage=20)
例2:查考试成绩有不及格的学生的学号SELECTDISTINCTSnoFROMSC
WHEREgradeFROMS
WHERESageBETWEEN20AND23;
(3)确定集合
例4:查计算机系、数学系、信息系的学生姓名、性别。SELECTSname,SsexFROMS
WHERESdeptIN(’CS’,‘IS’,‘MATH’);
例5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别
SELECTSname,SsexFROMS
WHERESdeptNOTIN(’CS’,‘IS’,‘MATH’);
(4)字符匹配
例6:查所有姓“刘”的学生的姓名、学号和性别。SELECTSname,Sno,SsexFROMS
WHERESnameLIKE‘刘%’;
例7:查姓“上官”且全名为3个汉字的学生姓名。SELECTSnameFROMS
WHERESnameLIKE‘上官__’;
例8:查所有不姓“张”的学生的姓名。SELECTSname,Sno,SsexFROMS
WHERESnameNOTLIKE‘张%’;例9:查DB_Design课程的课程号。
SELECTCnoFROMC
WHERECnameLIKE‘DB\\_Design’ESCAPE‘\\’;
(5)涉及空值的查询
例10:查缺考的学生的学号和课程号。
SELECTSno,Cno
FROMSC
WHEREGradeISNULL;(不能用=代替){有成绩的WHEREGradeISNOTNULLL;}
例11:查年龄为空值的学生的学号和姓名。SELECTSno,SnameFROMS
WHERESageISNULL;(6)多重条件查询
例12:查计算机系20岁以下的学生的学号和姓名。SELECTSno,SnameFROMS
WHERESdept=‘CS’ANDSage例16:查询学生总人数。SELECTCOUNT(*)FROMS
例17:查询选修了课程的学生人数。SELECTCOUNT(DISTINCTSno)FROMSC
例18:计算选修了C1课程的学生平均成绩。SELECTAVG(Grade)FROMSC
WHERECno=‘C1’;
例19:查询学习C3课程的学生最高分数。SELECTMAX(Grade)FROMSC
WHERECno=‘C3’;
5、对查询结果分组
例20:查询各个课程号与相应的选课人数。SELECTCno,COUNT(Sno)FROMSCGROUPBYCno;
该SELECT语句对SC表按Cno的取值进行分组,
所有具有相同Cno值的元组为一组,然后对每一组作用
聚合函数COUNT以求得该组的学生人数。
如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件组,则可以使用HAVING短
语指定筛选条件。
例21:查询计算机系选修了3门以上课程的学生的学号。
SELECTSno
FROMSC
WHERESdept=‘CS’GROUPBYSno
HAVINGCOUNT(*)>3;
WHERE子句与HAVING短语的根本区别在于作用对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。
例22:求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。
SELECTSage,COUNT(Sno)FROMSWHERESsex="M"GROUPBYSageHAVINGCOUNT(*)>50ORDERBY2,SageDESC;
二、多表查询
1、联接查询
例23:查询每个学生及其选修课程的情况。
SELECT
S.Sno,Sname,Sage,Ssex,Sdept,Cno,GradeFROMS,SC
WHERES.Sno=SC.Sno;例24:查询选修了C2课程且成绩在90分以上的所有学生。
SELECTS.Sno,SnameFROMS,SC
WHERES.Sno=SC.SnoANDSC.Cno=‘C2’ANDSC.Grade>90;
例25:查询每个学生选修的课程名及其成绩。SELECTS.Sno,Sname,Cname,SC.GradeFROMS,SC,C
WHERES.Sno=SC.SnoANDSC.Cno=C.Cno
例26:统计每一年龄选修课程的学生人数。SELECTSage,COUNT(DISTINCTS.Sno)FROMS,SC
WHERES.Sno=SC.SnoGROUPBYS;
由于要统计每一个年龄的学生人数,因此要把满足WHERE子句中条件的查询结果按年龄分组,在每一组中的学生年龄相同。此时的SELECT子句应对每一组分开进行操作,在每一组中,年龄只有一个值,统计的人数是这一组中的学生人数。1、嵌套查询
(1)带有IN谓词的子查询
指父查询与子查询之间用IN进行联接,判断某个属性列值是否在子查询的结果中。例27:查询选修了C2课程的学生姓名。SELECTSnameFROMS
WHERESnoIN(SELECTSnoFROMSC
WHERECno=‘C2’);
例28:查询与“张三”在同一个系学习的学生学号、姓名和系别。分析:
(1)确定“张三”所在的系;(2)查找所有在X系学习的学生。SELECTSdeptFROMS
WHERESname=‘张三’;
SELECTSno,Sname,SdeptFROMS
WHERESdept=‘X’
把第一步查询嵌入到第二步查询中,用以构造第二步FROMSASS1,SASS2查询的条件。
WHERES1.Sdept=S2.SdeptANDS2.Sname=‘张三’SELECTSno,Sname,SdeptFROMS
WHERESdeptIN(SELECTSdeptFROMS
WHERESname=‘张三’);
例29:查询选修课程名为“数据库”的学生学号和姓名。本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C表中,但S和C表没有直接联系,必须通过SC表建立它们二者的联系。C→SC→S基本思路:
(1)首先在C表中找出“DB”课程的课程号Cno;(2)然后在SC表中找出Cno等于第一步给出的Cno
集合中的某个元素Cno;
(3)最后在S关系中选出Sno等于第二步中Sno集合中某个元素的元组,取出Sno和Sname送入结果表列。
SELECTSno,SnameFROMS
WHERESnoIN
(SELECTSnoFROMSC
WHERECnoIN(SELECTCnoFROMCWHERECname=
‘DB’));联接查询方式
(2)带有比较运算符的子查询
例30:查询与“张三”在同一个系学习的学生学号、姓名和系别。
SELECTSno,Sname,SdeptFROMS
WHERESdept=
(SELECTSdeptFROMS
WHERESname=‘张三’);
例31:查询选修课程名为“数据库”的学生学号和姓名。SELECTSno,SnameFROMS
WHERESnoIN
(SELECTSnoFROMSC
WHERECno=
(SELECTCnoFROMCWHERECname=
‘DB’));
(3)带有EXISTS谓词的子查询
(1)带有EXISTS谓词的子查询不返回任何实际数据,它只产生逻辑值。
例32:查询选修了C2课程的学生姓名。
1.SELECTSnameFROMS
WHERESnoIN(SELECTSnoFROMSC
WHERECno=‘C2’);2.SELECTSnameFROMS
WHEREEXISTS(SELECT*FROMSC
WHERESC.Sno=S.SnoANDCno=‘C2’);
例33:查询所有未选修C2课程的学生姓名。SELECTSnameFROMS
WHERENOTEXISTS(SELECT*FROMSC
WHERESC.Sno=S.SnoANDCno=‘C2’);[NOT]EXISTS实际上是一种内、外层互相关的嵌套查询,只有当内层引用了外层的值,这种查询才有意义。
例34:查询与“张三”在同一个系学习的学生学号、姓名和系别。
SELECTSno,Sname,SdeptFROMSASS1WHEREEXISTS(SELECT*
FROMSASS2
WHERE
S2.Sdept=S1.
Sdept
ANDS2.Sname=‘张三’);相关子查询
例35:查询选修了全部课程的学生姓名。
在表S中找学生,要求这个学生学了全部课程。换言之,在S表中找学生,在C中不存在一门课程,这个学生没有学。
SELECTSnameFROMS
WHERENOTEXISTS(SELECT*FROMC
WHERENOTEXISTS
(SELECT*FROMSCWHERESC.Sno=S.Sno
AND
SC.Cno=C.Cno));
例36:查询所学课程包含学生S3所学课程的学生学号
分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。
SELECTDISTINCTSnoFROMSCASXWHERENOTEXISTS(SELECT*FROMSCASY
WHEREY.Sno=‘S3’ANDNOTEXISTS
(SELECT*
FROMSCASZWHEREZ.Sno=X.Sno
AND
Z.Cno=Y.Cno));
友情提示:本文中关于《数据库中SQL知识点重点章节总结与归纳很全的哦》给出的范例仅供您参考拓展思维使用,数据库中SQL知识点重点章节总结与归纳很全的哦:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。