资源简介 (共20张PPT)查询与维护学生信息管理数据表任务6-1 简单数据查询目录Contents任务6-2 多表连接查询任务6-3 嵌套查询任务6-4 集合查询任务6-5 学生信息浏览、查询、统计任务6-6 数据更新任务6-7 学生基本信息维护、信息导出PART 2任务6-2 多表连接查询(一)交叉连接(二)内连接(四)外连接任务assignments(三)自连接多表连接查询任务6-2任务1-1 数据处理【任务分析】进行数据查询时,有时仅从单个表中无法得到想要的结果,此时,可以使用多表连接查询。【课堂任务】掌握并理解表的连接查询。 交叉连接 内连接 自连接 外连接多表连接查询任务6-2任务1-1 数据处理连接查询是指查询同时涉及两个或两个以上表之间的逻辑关系来检索数据,连接查询是关系数据库中最主要的查询,表与表之间的连接分为交叉连接(Cross Join)、内连接(Inner Join)、自连接(Self Join)、外连接(Outer Join)。外连接又分为3种,即左外连接(Left Join)、右外连接(Right Join)、全外连接(Full Join)。连接查询的类型可以在SELECT语句的FROM子句中指定,也可以在WHERE子句中指定。可以在FROM或WHERE子句中指定内部连接。只能在FROM子句中指定外部连接。在FROM子句中指定连接条件有助于将这些连接条件与WHERE子句中可能指定的其他任何搜索条件分开,建议用这种方法来指定连接。多表连接查询任务6-2任务1-1 数据处理(一)交叉连接交叉接又称笛卡儿连接,是指两个表之间做笛卡儿积操作,得到结果集的行数是两个表的行数的乘积。交叉连接的语法格式如下。SELECT [ALL|DISTINCT] [别名.]<选项1> [AS<显示列名>] [,[别名.]<选项2> [AS<显示列名>]...]FROM <表名1>[别名1] ,<表名2>[别名2][,…]需要连接查询的表的名在FROM子句中指定,表名之间用英文逗号隔开。多表连接查询任务6-2任务1-1 数据处理多表连接查询任务6-2任务1-1 数据处理(二)内连接内连接的语法格式如下。SELECT [ALL|DISTINCT] [别名.]<选项1>[AS<显示列名>] [,[别名.]<选项2>[AS<显示列名>][,...]]FROM <表名1> [别名1],<表名2> [别名2][,…]WHERE <连接条件表达式> [AND <条件表达式>]或者SELECT [ALL|DISTINCT] [别名.]<选项1>[AS<显示列名>] [,[别名.]<选项2>[AS<显示列名>][,...]]FROM <表名1> [别名1] INNER JOIN <表名2> [别名2] ON <连接条件表达式>[WHERE <条件表达式>]其中,第一种语法格式的连接类型在WHERE子句中指定,第二种语法格式的连接类型在FROM子句中指定。多表连接查询任务6-2任务1-1 数据处理说明 (1)FROM后可跟多个表名,表名与别名之间用空格间隔。(2)当在WHERE子句中指定连接类型时,WHERE后一定要有连接条件表达式,即两个表的公共字段相等。(3)若不定义别名,则表的别名默认为表名,定义别名后,使用定义的别名。(4)用表的别名对列加以限定,可提高可读性。(5)若在输出列或条件表达式中出现所引用的两个或多个表中的公共字段,则公共字段名前必须加别名限定。多表连接查询任务6-2任务1-1 数据处理【例6.43】 查询每门课程及其被选修的情况。因为课程的基本情况存放在course表中,选课情况存放在sc表中,所以查询过程涉及上述两个表。这两个表是通过公共字段cno和cterm实现内连接的。SELECTA.*, B.*FROM courseA,sc BWHERE A.cno=B.cnoANDA. cterm =B.cterm或者SELECT A.*, B.*FROM course A INNER JOIN sc BON A.cno=B.cno AND A. cterm = B.cterm该查询的执行结果如图6.17所示。多表连接查询任务6-2任务1-1 数据处理多表连接查询任务6-2任务1-1 数据处理【例6.44】 用自然连接完成例6.43的查询。SELECT o, cname, course.cterm, sno, degreeFROM course, scWHERE o =sc.cno AND course.cterm =sc.Cterm或者为:SELECT o, cname, course.cterm, sno, degreeFROM course INNER JOIN scON o =sc.cno AND course.cterm =sc.cterm多表连接查询任务6-2任务1-1 数据处理【例6.45】 输出所有女生的学号、姓名、选修课程的课程号及成绩。SELECT A.sno, sname, cno, degreeFROM student A, sc BWHERE A.sno=B.sno AND ssex='女'或者SELECT A.sno, sname, cno, degreeFROM student A INNER JOIN sc B ON A.sno=B.snoWHERE ssex='女'【例6.46】 输出学生党员的学号、姓名、选修课程的课程名及成绩。SELECT A.sno, sname, cname, degreeFROM student A, sc B, course CWHERE A.sno=B.sno AND B.cno=C.cnoANDB.cterm =C.cterm AND spstatus='党员'多表连接查询任务6-2任务1-1 数据处理(三)自连接连接操作不只是在不同的表之间进行,一张表内还可以进行自身连接操作,即将同一个表的不同行连接起来,我们称之为自联接,自联接是一种特殊的内联接。自连接的语法格式如下。SELECT [ALL|DISTINCT] [别名.]<选项1> [AS<显示列名>][,[别名.]<选项2> [AS<显示列名>][,...]]FROM <表名1> [别名1],<表名1> [别名2][,…]WHERE <连接条件表达式> [AND <条件表达式>]多表连接查询任务6-2任务1-1 数据处理多表连接查询任务6-2任务1-1 数据处理多表连接查询任务6-2任务1-1 数据处理(四)外连接在内连接中,只有在两个表中匹配的行才能在结果集中出现。在外连接中可以只限制一个表,而对另外一个表不加限制(所有行都出现在结果集中)。外连接分为左外连接、右外连接和全外连接。左外连接是不限制连接条件中左边的表,即在结果集中保留连接表达式左边表中的非匹配记录;右外连接是不限制右边的表,即在结果集中保留连接表达式右边表中的非匹配记录;全外连接对两个表都不加限制,两个表中的所有行都会包含在结果集中。多表连接查询任务6-2任务1-1 数据处理外连接命令的语法格式如下。SELECT [ALL|DISTINCT] [别名.]<选项1> [AS<显示列名>][,[别名.]<选项2> [AS<显示列名>][,...]]FROM <表名1> LEFT| RIGHT| FULL [OUTER]JOIN <表名2>多表连接查询任务6-2任务1-1 数据处理 展开更多...... 收起↑ 资源预览