资源描述
Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,第,5,章 数据查询,连接查询和子查询,单击此处编辑母版标题样式,第,17,讲,第,5,章 数据查询,连接查询和,子查询,主讲人:段利文,第,17,讲,复习,:,数据库的投影运算,(,选择列,),用什么子句实现?,数据库的选择运算,(,选择行,),用什么子句实现?,分类汇总用什么子句实现?,对分类汇总生成的组进行条件筛选用什么子句?,明细汇总用什么子句实现?,computeby,子句必须与什么子句连用?,select,子句,where,子句,group by,子句,compute,子句,order by,子句,having,子句,复习,:,数据汇总查询的语法格式,用聚合函数、,group by,子句、,computeby,子句,select,列名表,from,表名,n,where,条件,group by,列名,having,逻辑表达式,order by,列名,compute,聚集函数,by,列名,投影运算,选择运算,分类汇总,连接运算,排序,明细汇总,第,5,章 数据查询,连接查询,和,子查询,学习目标,认知目标:,了解数据库的连接运算,了解子查询的基本含义,能力目标,:,掌握连接查询的方法,(,重点、难点,),理解子查询的方法,(,难点,),一、连接查询,(,多表查询),连接查询的含义:,从,多个,相关的表中查询数据(用,from,子句实现)。,连接运算:,把多个表中的行按,给定的条件,进行拼接从而形成新表。,连接运算的类型:,内连接,(,掌握),外连接,(,左外连接、右外连接、全外连接),(,理解,),自连接,(,理解,),无限制连接,(,了解,略,),一、连接查询,(,多表查询),1.,内连接,(,自然连接,),含义:,将多个表中的,共享列值,进行比较,把表中满足,连接条件,的行组合起来,作为查询结果。,例如:请将,xsqk,和,xs_kc,表进行连接。,内连接,查询结果,思考:,这两张表为什么可以进行连接?,连接的条件应该是什么?,一、连接查询,(,多表查询),1.,内连接,(,自然连接,),语法格式有两种,:,ANSI,语法形式:,select,列名表,from,表,1,inner,join,表,2,on,表,1.,列名,1=,表,2.,列名,2,SQL Server,语法形式:,select,列名表,from,表,1,表,2,where,表,1.,列名,1=,表,2.,列名,2,表示内连接,(,可省略,),连接条件,:当两个表中的列名相同时,需加上表名修饰;否则,可省去表名。,连接条件,一、连接查询,(,多表查询),1.,内连接,(,自然连接,),实例,1,:查询不及格学生的学号、姓名、课程号、成绩信息(教材,P113,)。,分析:,确定要查询内容的来源。,确定连接条件,(,要查询的表通过什么列名相关联,),。,select,xsqk,.,学号,姓名,课程号,成绩,from,xsqk,xs_kc,where,xsqk,.,学号,=,xs_kc,.,学号,and,成绩,60,为什么要加上表名前缀?而其它字段前不要?,因学号在两个表中都有,所以需指明所属的表名。,一、连接查询,(,多表查询),1.,内连接,(,自然连接,),课堂练习,1,:查询不及格学生的学号、课程名、授课教师、开课学期的信息。,select,学号,xs_kc,.,课程号,授课教师,开课学期,成绩,from,kc,xs_kc,where,xs_kc,.,课程号,=,kc,.,课程号,and,成绩,60,select,学号,xs_kc,.,课程号,授课教师,开课学期,成绩,from,kc,join,xs_kc,on,xs_kc,.,课程号,=,kc,.,课程号,and,成绩,60,请思考:,xsqk,、,kc,、,xs_kc,三张表应如何连接?,一、连接查询,(,多表查询),2.,外连接,含义:,在,内连接,中,只把两个表中,满足条件,的行显示出来。,而在,外连接,中,可以将,不满足条件,的行也显示出来。,外连接的类型,左外连接:保留左边表中不匹配的行。,右外连接:保留右边表中不匹配的行。,全外连接:保留两表中不匹配的行。,一、连接查询,(,多表查询),2.,外连接,左外连接的查询结果,:,右外连接,的查询结果,:,左外连接,查询结果,右外连接,查询结果,一、连接查询,(,多表查询),2.,外连接,全外连接的查询结果,:,全外连接,查询结果,一、连接查询,(,多表查询),2.,外连接,(1),左外连接,ANSI,语法格式,select,列名表,from,表,1,left,outer,join,表,2,on,表,1.,列名,1=,表,2.,列名,2,SQL Server,语法格式,select,列名表,from,表,1,表,2,where,表,1.,列名,1 *=,表,2.,列名,2,实例:阅读教材,P128,例,5-36,。,一、连接查询,(,多表查询),2.,外连接,(2),右外连接,ANSI,语法格式:,select,列名表,from,表,1,right,outer,join,表,2,on,表,1.,列名,1=,表,2.,列名,2,SQL Server,语法格式:,select,列名表,from,表,1,表,2,where,表,1.,列名,1 =*,表,2.,列名,2,实例:阅读教材,P128,例,5-37,。,一、连接查询,(,多表查询),2.,外连接,(3),全外连接,语法格式,(,只有一种,),:,select,列名表,from,表,1,full,outer,join,表,2,on,表,1.,列名,1=,表,2.,列名,2,说明:,只有,ANSI,语法格式,SQL Server,无全外连接语句。,实例:阅读教材,P130,例,5-38,。,一、连接查询,(,多表查询),3.,自连接,含义:,将,同一个表,的不同行连接起来。,自连接可以看作一张表的两个副本之间进行的连接。,要求:,在自连接中,必须,为表指定两个别名,,使之在逻辑上成为两张表。,实例:阅读教材,P130,例,5-39,。,二、子查询,含义:,是指一条,select,语句作为另一条,select,语句的一部分,外层的,select,语句被称为外部查询,内层的,select,语句被称为,内部查询,(,或,子查询,),。,使用注意事项(,P119,):,子查询出现的形式:,多数情况下,子查询出现在外部查询的,where,子句中,并与比较运算符、列表运算符,in,、,存在运算符,exists,等一起构成,查询条件,,完成有关操作。,在新增列中的子查询。,二、子查询,-,类型,相关子查询,含义:内查询的执行,依赖,于外查询。,执行过程:,将外部查询到的第,1,条记录中被引用列的列值,传递给子查询,然后执行子查询。,根据子查询的执行结果判断外部查询条件是否满足要求,若是则显示结果行,直到外部查询处理完外表的每一行。,嵌套子查询,含义:内查询的执行,不依赖,于外查询。,执行过程:,先执行子查询,子查询得到的结果集不被显示出来,而是传递给外部查询,,作为外部查询的条件,来使用。,执行外部查询,并显示查询结果。,二、子查询,说明:,不管是相关子查询还是嵌套子查询,,其外查询用于显示查询结果集,,而,内查询的结果用来作为外查询的查询条件,。,语法格式:,select,字段列表,from,表名,where,(,select from where,),运算符 表达式,该子查询用来作为外查询的,查询条件,二、子查询,1.,使用比较运算的子查询,例,(5-56),:查询平均分低于,60,的学生学号和姓名。,select,学号,姓名,from,xsqk,where,(,select,avg,(,成绩,),from,xs_kc,where,xs_kc,.,学号,=,xsqk,.,学号,)=80,二、子查询,2.,使用,all,、,any,关键字的子查询,例,5-41,:查询有不及格学生的课程的授课教师,select,课程号,授课教师,from,kc,where,课程,号,=any,(,select,课程号,from,xs_kc,where,成绩,60,),该子查询属于,嵌套子查询,,执行后,返回,单列多个值,(,列表,),表示等于,列表,中的任一个值,子查询,其结果作为外查询的条件,外查询,用于显示结果,二、子查询,2.,使用,all,、,any,关键字的子查询,例,5-42,:查询每门课程的最低分。,select,*,from,xs_kc,a,where,成绩,=all,(,select,成绩,from,xs_kc,b,where,b.,课程号,=a.,课程号,),二、子查询,3.,使用列表运算符的子查询,例,5-43,:查询无不及格学生的课程的授课教师,select,课程号,授课教师,from,kc,where,课程号,not in,(,select,课程号,from,xs_kc,where,成绩,60),二、子查询,4.,使用,exists,运算符的子查询,例,5-44,:,至少一门课程不及格的学生信息,。,select distinct,学号,姓名,from,xsqk,a,where,exists,(,select,*,from,xs_kc,b,where,b.,学号,=a.,学号,and,成绩,80,),=2,本课小结,连接查询,(,多表查询),内连接:只显示,条件匹配,的连接行。,外连接:既显示条件匹配的连接行,还可显示条件不匹配的行。,左外连接:保留左表中不匹配的行。,右外连接:保留右表中不匹配的行。,全外连接:保留两边表中不匹配的行。,自连接:将同一张表中,条件匹配,的行进行连接。,子查询,相关子查询,嵌套子查询,课余作业布置,课外练习:,教材,P137,:,21-25,上机准备:,连接查询和子查询,预习:第,5,章 视图,
展开阅读全文