第8次课程教案本次课授课章节第3章关系数据库标准语言SQL2学时数本次课教学理解:①查询语句的一般格式目的与要求掌握:①嵌套查询:②集合查询教学嵌套查询、集合查询重点本次课重点与难点教学嵌套查询难点教学方法理论讲授与多媒体演示相结合,举例分析法与手段教学内容课时分配(分钟)45嵌套查询教学内容30集合查询时间分配查询语句的一般格式15新课导入在网络教学平台中当需要查询多项信息时如何实现?是否有其他的查询方法?二、讲授教学内容1、嵌套查询■嵌套查询概述嵌套查询分类-嵌套查询求解方法■引出子查询的谓词【例9]询其他系中比信息系任意一个(其中某一个)学生年龄小的学生姓名和年龄教学过SELECTSname,Sage程设计FROMStudentWHERESage<ANY(SELECTSageFROMStudentWHERE Sdept=IS)ANDSdept<>IS:/*注意这是父查询块中的条件*/结果SageSname王敏18执行过程17
17 第 8 次课程教案 授 课 章 节 第 3 章 关系数据库标准语言 SQL 本次课 学时数 2 本 次 课 教 学 目 的 与 要 求 理解:① 查询语句的一般格式 掌握:① 嵌套查询;② 集合查询 本次课 重 点 与 难 点 教学 重点 嵌套查询、集合查询 教学 难点 嵌套查询 教 学 方 法 与手段 理论讲授与多媒体演示相结合,举例分析法 教 学 内容 时 间 分 配 教学内容 课时分配(分钟) 嵌套查询 45 集合查询 30 查询语句的一般格式 15 教学过 程设计 一、新课导入 在网络教学平台中当需要查询多项信息时如何实现?是否有其他的查询方法? 二、讲授教学内容 1、嵌套查询 嵌套查询概述 嵌套查询分类 嵌套查询求解方法 引出子查询的谓词 [例 9] 询其他系中比信息系任意一个(其中某一个)学生年龄小的学生姓名和年龄 SELECT Sname,Sage FROM Student WHERE Sage < ANY (SELECT Sage FROM Student WHERE Sdept= ' IS ') AND Sdept <> ' IS ' ; /* 注意这是父查询块中的条件 */ 结果 Sname Sage 王敏 18 执行过程
1.DBMS执行此查询时,首先处理子查询,找出IS系中所有学生的年龄,构成一个集合(19,18)2.处理父查询,找所有不是IS系且年龄小于19或18的学生【例10]查询与"刘晨"在同一个系学习的学生。可以用带EXISTS谓词的子查询替换:SELECTSno,Sname,SdeptFROMStudentS1WHERE EXISTSSELECT *FROMStudentS2WHERE S2.Sdept = S1.Sdept ANDS2.Sname=刘晨:【例11]查询选修了全部课程的学生姓名。SELECT SnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT *FROM SCWHERESno=Student.SnoAND Cno=Course.Cno)2、集合查询标准SQL直接支持的集合操作种类:并操作(UNION)一般商用数据库支持的集合操作种类:并操作(UNION)、交操作(INTERSECT)、差操作(MINUS)【例12]】查询计算机科学系的学生及年龄不大于19岁的学生。方法一:SELECT *FROM StudentWHERE Sdept="CSUNIONSELECT*FROM StudentWHERE Sage<=19:方法二:SELECTDISTINCT*FROM StudentWHERESdept="CSORRSage<=19[例13]设数据库中有一教师表Teacher(Tno,Tname..)。查询学校中所有师生的姓名。SELECT SnameFROMStudent18
18 1.DBMS 执行此查询时,首先处理子查询,找出 IS 系中所有学生的年龄,构成一个集合(19,18) 2. 处理父查询,找所有不是 IS 系且年龄小于 19 或 18 的学生 [例 10]查询与“刘晨”在同一个系学习的学生。可以用带 EXISTS 谓词的子查询替换: SELECT Sno,Sname,Sdept FROM Student S1 WHERE EXISTS SELECT * FROM Student S2 WHERE S2.Sdept = S1.Sdept AND S2.Sname = ' 刘晨 '; [例 11] 查询选修了全部课程的学生姓名。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM Course WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno= Student.Sno AND Cno= Course.Cno); 2、集合查询 标准 SQL 直接支持的集合操作种类:并操作(UNION) 一般商用数据库支持的集合操作种类:并操作(UNION)、交操作(INTERSECT)、差操 作(MINUS) [例 12] 查询计算机科学系的学生及年龄不大于 19 岁的学生。 方法一: SELECT * FROM Student WHERE Sdept= 'CS' UNION SELECT * FROM Student WHERE Sage<=19; 方法二: SELECT DISTINCT * FROM Student WHERE Sdept= 'CS' OR Sage<=19; [例 13] 设数据库中有一教师表 Teacher(Tno, Tname,.)。查询学校中所有师生 的姓名。 SELECT Sname FROM Student