Windows Server数据库课件--第03章 SQL语言(4).ppt
《Windows Server数据库课件--第03章 SQL语言(4).ppt》由会员分享,可在线阅读,更多相关《Windows Server数据库课件--第03章 SQL语言(4).ppt(111页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、)1数据库系统概论数据库系统概论数据库系统概论数据库系统概论An Introduction to Database SystemAn Introduction to Database System第三章第三章第三章第三章 关系数据库标准语言关系数据库标准语言关系数据库标准语言关系数据库标准语言SQLSQLSQLSQL(4 4 4 4))2复习复习1.1.统计每人不及格的门数统计每人不及格的门数2.2.查询显示开设课程的名称、及格人数及最高分查询显示开设课程的名称、及格人数及最高分3.3.查询显示所有计算机系学生的姓名,以及他们查询显示所有计算机系学生的姓名,以及他们 所选课程和相应的成绩。所选
2、课程和相应的成绩。)3复习复习单表查询单表查询单表查询单表查询SELECTSno,count(cno)FROMSCWHEREgrade=60groupbycno2.2.查询显示开设课程的名称、及格人数及最高分查询显示开设课程的名称、及格人数及最高分)53.3.显示全部计算机系学生的姓名,以及他们所显示全部计算机系学生的姓名,以及他们所选课程名和相应的成绩。选课程名和相应的成绩。复习复习连接查询连接查询连接查询连接查询SELECTFROMWHEREsname,cname,gradestudent,sc,o=oandstudent.sno=sc.snoandsdeptCS)6复习复习连接查询连接查
3、询连接查询连接查询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
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.外
5、连接外连接(1)(1)外连接与普通连接的区别外连接与普通连接的区别普通连接操作只输出满足连接条件的元组普通连接操作只输出满足连接条件的元组外外连连接接操操作作以以指指定定表表为为连连接接主主体体,将将主主体体表中的全部记录输出显示表中的全部记录输出显示【例例】将每个学生的基本信息与其所选课程将每个学生的基本信息与其所选课程信息对应显示。信息对应显示。)11结果:结果:Student.SnoSnameSsexSageSdeptCnoGrade 0215121李勇李勇男男20CS1920215121李勇李勇男男20CS2850215121李勇李勇男男20CS3880215122刘晨刘晨女女19IS
6、2900215122刘晨刘晨女女19IS3800215123王敏王敏女女18MA0215125张立张立男男19IS示例:示例:外连接外连接外连接外连接)12SELECT,FROM连接类型连接类型JOINJOINONONONWHEREINNERLEFTRIGHTFULLCROSS提示:提示:JOINJOIN的顺序和的顺序和ONON连接条件的顺序相反。连接条件的顺序相反。外连接外连接只能对两个表进行只能对两个表进行(2)(2)语法格式语法格式4.4.外连接外连接)130215121021512502151230215122Sno李勇李勇张立张立王敏王敏刘晨刘晨Sname男男男男女女女女Ssex20
7、181819SageCSISMAISSdeptSnoCnoGrade02151211920215121285021512628802151222900215122380 Student ScSELECTstudent.*,sc.*FROMstudentLEFTJOINscONstudent.sno=sc.snoRIGHTFULL例:查询所有学生的个人信息及选课信息。例:查询所有学生的个人信息及选课信息。4.4.外连接外连接)144.4.外连接外连接SELECTsname,gradeFROMstudentJOINscJOINcourseONo=oONstudent.sno=sc.snoWHERE
8、cname=数学数学 例例 查询选修查询选修“数学数学”课程的学生的姓名和该课程的学生的姓名和该课程成绩。课程成绩。)15查询显示全部计算机系学生的姓名,以及他们查询显示全部计算机系学生的姓名,以及他们所选课程的门数。所选课程的门数。练习练习SELECTsname,count(cno)课程门数课程门数FROMstudentleftjoinscONstudent.sno=sc.snoWHEREsdeptCSGROUPBYSname)16特点:特点:特点:特点:WHEREWHEREWHEREWHERE子句中含多个条件。子句中含多个条件。子句中含多个条件。子句中含多个条件。例例3535查询选修查询选
9、修2 2号课程且成绩在号课程且成绩在9090分以上所有学生分以上所有学生的学号、姓名。的学号、姓名。SELECTStudent.Sno,student.SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno=2ANDSC.Grade90;5.5.复合条件连接复合条件连接)17 特点:连接操作在两个以上的表之间进行特点:连接操作在两个以上的表之间进行特点:连接操作在两个以上的表之间进行特点:连接操作在两个以上的表之间进行 例例3636查询每个学生的学号、姓名、选修的课程名及查询每个学生的学号、姓名、选修的课程名及 成绩成绩.SELECTStuden
10、t.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 嵌套查询嵌套查询
11、n嵌套查询概述嵌套查询概述n嵌套查询分类及求解方法嵌套查询分类及求解方法n引出子查询的谓词引出子查询的谓词 )20(1)(1)一个一个SELECT-FROM-WHERE语句称为一个查询块语句称为一个查询块(2)(2)将一个查询块嵌套在另一个查询块的将一个查询块嵌套在另一个查询块的WHEREWHERE子句子句或或HAVINGHAVING短语短语条件中的查询称为嵌套查询。条件中的查询称为嵌套查询。1.1.嵌套查询概述嵌套查询概述例:例:SELECT SELECT SnameSname 外层查询外层查询/父查询父查询 FROM StudentFROM Student WHERE WHERE SnoS
12、no 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只对查询最终结果的排序只对查询最终结果的排序层层嵌套方式反映了层层嵌套方式反
13、映了SQLSQL语言的结构化语言的结构化 不同的不同的DBMSDBMS允许的最大嵌套层数不同允许的最大嵌套层数不同有些嵌套查询可以用连接查询替代有些嵌套查询可以用连接查询替代)223.4.3 3.4.3 嵌套查询嵌套查询n嵌套查询概述嵌套查询概述n嵌套查询分类及求解方法嵌套查询分类及求解方法n引出子查询的谓词引出子查询的谓词 )23(1)(1)不相关子查询:不相关子查询:子查询的查询条件不依赖于父查询子查询的查询条件不依赖于父查询 查询过程:由里向外逐层处理查询过程:由里向外逐层处理每个子查询在上一级查询处理之前先求解;每个子查询在上一级查询处理之前先求解;子查询的结果用于建立父查询的查找条件
14、。子查询的结果用于建立父查询的查找条件。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 WHER
15、E CnoCnoCnoCno=2);=2);=2);=2);)25(2)(2)相关子查询:相关子查询:子查询的查询条件依赖于父查询子查询的查询条件依赖于父查询 查询过程查询过程:首先取外层查询表的第一个元组,根据它与首先取外层查询表的第一个元组,根据它与内层查询内层查询相关的属性值相关的属性值处理内层查询,若处理内层查询,若WHEREWHERE子句子句返回值为真返回值为真,则取此元组放入结果,则取此元组放入结果表;表;然后再取外层表的下一个元组。重复这一过然后再取外层表的下一个元组。重复这一过程,直至外层表全部检查完为止。程,直至外层表全部检查完为止。嵌套查询的分类嵌套查询的分类)263.4.
16、3 3.4.3 嵌套查询嵌套查询n嵌套查询概述嵌套查询概述n嵌套查询分类及求解方法嵌套查询分类及求解方法n引出子查询的谓词引出子查询的谓词 )273.3.引出子查询的谓词引出子查询的谓词n带有带有ININ谓词的子查询谓词的子查询n带有带有比较运算符比较运算符的子查询的子查询n带有带有ANYANY或或ALLALL谓词的子查询谓词的子查询n带有带有EXISTSEXISTS谓词的子查询谓词的子查询)28例例39查询与刘晨在同一个系学习的学生。查询与刘晨在同一个系学习的学生。可以分步实现:可以分步实现:确定确定“刘晨刘晨”所在系名所在系名SELECTSdeptFROMStudentWHERESname
17、=刘晨刘晨;1.1.带有带有ININ谓词的子查询谓词的子查询结果为:结果为:deptIS)29例例39查询与刘晨在同一个系学习的学生。查询与刘晨在同一个系学习的学生。查找所有在查找所有在ISIS系学习的学生系学习的学生SELECTSno,Sname,SdeptFROMStudentWHERESdept=IS;结果为:结果为:SnoSnameSdept0215122刘晨刘晨IS0215125张立张立IS1.1.带有带有ININ谓词的子查询谓词的子查询(续续)301.1.带有带有ININ谓词的子查询谓词的子查询(续续)方法方法方法方法1 1:将第一步查询嵌入到第二步查询的条件中将第一步查询嵌入到第
18、二步查询的条件中SELECTSno,Sname,SdeptFROMStudentWHERESdeptIN(SELECTSdeptFROMStudentWHERESname=刘晨刘晨)构造嵌套查询构造嵌套查询说明:此查询为不相关子查询;说明:此查询为不相关子查询;DBMSDBMS求解该查询时也是分步去做的。求解该查询时也是分步去做的。)31方法方法方法方法2 2:也可用自身连接完成本查询要求也可用自身连接完成本查询要求也可用自身连接完成本查询要求也可用自身连接完成本查询要求S1S2SELECTS1.Sno,S1.Sname,S1.SdeptFROMStudentS1,StudentS2WHERE
19、S1.Sdept=S2.SdeptANDS2.Sname=刘晨刘晨;1.1.带有带有ININ谓词的子查询谓词的子查询(续续)9500195001950049500495002950029500395003SnoSno李勇李勇张立张立王敏王敏刘晨刘晨SnameSname男男男男女女女女SsexSsex2020191918181919SageSageCSCSISISMAMAISISSdeptSdept9500195001950049500495002950029500395003SnoSno李勇李勇张立张立王敏王敏刘晨刘晨SnameSname男男男男女女女女SsexSsex202019191818
20、1919SageSageCSCSISISMAMAISISSdeptSdept)32 例例例例38383838查询选修了课程名为查询选修了课程名为查询选修了课程名为查询选修了课程名为“信息系统信息系统信息系统信息系统”的学生学号和姓的学生学号和姓的学生学号和姓的学生学号和姓名名名名1.1.带有带有ININ谓词的子查询谓词的子查询(续续)最后在最后在Student关系中取出关系中取出Sno和和SnameSELECTSno,SnameFROMStudentWHERESnoIN()SELECTCnoFROMCourseWHERECname=信息系统信息系统 首先在首先在CourseCourse关系中找
21、出关系中找出“信息系统信息系统”的课程号的课程号结果:结果:3 3 然后在然后在SCSC关系中找出选修了关系中找出选修了3 3号课程的学生学号号课程的学生学号SELECTSnoFROMSCWHERECnoIN())33组合以后的代码:组合以后的代码:组合以后的代码:组合以后的代码:SELECTSno,SnameFROMStudentWHERESnoIN(SELECTSnoFROMSCWHERECnoIN(SELECTCnoFROMCourseWHERECname=信息系统信息系统);1.1.带有带有ININ谓词的子查询谓词的子查询(续续)34 结果:结果:SnoSno SnameSname 0
22、215121 0215121 李勇李勇 0215122 0215122 刘晨刘晨 1.1.带有带有ININ谓词的子查询谓词的子查询(续续)另:本例也可用连接查询另:本例也可用连接查询另:本例也可用连接查询另:本例也可用连接查询SELECTSno,SnameFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDCourse.Cname=信息系统信息系统;)35是指父查询和子查询之间用比较运算符连接是指父查询和子查询之间用比较运算符连接的查询的查询适用范围:适用范围:当能确切知道当能确切知道内层查询内层查询返回单值返回
23、单值时;时;内层查询内层查询返回值是集合,要返回值是集合,要与与ANYANY或或ALLALL谓谓词配合使用后。词配合使用后。2.2.带有比较运算符的子查询带有比较运算符的子查询)362.2.带有比较运算符的子查询带有比较运算符的子查询(续续)例:假设一个学生只可能在一个系学习,并且必须属例:假设一个学生只可能在一个系学习,并且必须属于一个系,则在例于一个系,则在例3737可以改写为可以改写为 :SELECTSno,Sname,SdeptFROMStudentWHERESdept=(SELECTSdeptFROMStudentWHERESname=刘晨刘晨);注意:注意:(1)子查询一定要用括号
24、括起来子查询一定要用括号括起来)372.2.带有比较运算符的子查询带有比较运算符的子查询(续续)注意:注意:(2)子查询一定要跟在比较符之后。子查询一定要跟在比较符之后。SELECTSno,Sname,SdeptFROMStudentWHERE(SELECTSdeptFROMStudentWHERESname=刘晨刘晨)=SdeptSdept;)38谓词语义:谓词语义:ANYANY:表示任意一个值,:表示任意一个值,ALLALL:表示所有值:表示所有值3.3.带有带有ANYANY或或ALLALL谓词子查询谓词子查询)39需要配合使用比较运算符:需要配合使用比较运算符:(=)ANY (=)ANY
25、 大于大于(大于等于大于等于)子查询结果中的某个值子查询结果中的某个值 (=)ALL (=)ALL 大于大于(大于等于大于等于)子查询结果中的所有值子查询结果中的所有值(=)ANY(=)ANY 小于小于(小于等于小于等于)子查询结果中的某个值子查询结果中的某个值 (=)ALL(=)ALL 小于小于(小于等于小于等于)子查询结果中的所有值子查询结果中的所有值=ANY=ANY 等于子查询结果中的某个值等于子查询结果中的某个值 =ALL=ALL 等于子查询结果中的所有值等于子查询结果中的所有值(通常无意义通常无意义)!=ANY!=ANY 不等于子查询结果中的某个值不等于子查询结果中的某个值!=ALL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows Server数据库课件-第03章 SQL语言4 Server 数据库 课件 03 SQL 语言
限制150内