首页 理论教育 联接查询和外部联接,案例展示

联接查询和外部联接,案例展示

时间:2023-10-21 理论教育 版权反馈
【摘要】:图4-30 自联接还可以按下面形式书写代码。图4-31 左向外部联接5.右向外部联接查询在右向外部联接中,将返回右表中的所有行,其中右表不满足条件的记录在拼接时,左表的相应列中填充NULL值。 将“课程”表与“教师”表进行完整外部联接,查看教学任务安排情况。图4-33 完全外部联接7.联接三个或更多的表在FROM子句中允许使用多个ON实现联接三个或更多的表。

联接查询和外部联接,案例展示

1.等值联接查询

等值联接在内部联接的联接条件中使用“=”运算符。它返回两个表中的所有列,但只返回在联接列中具有相等值的行。

【例4-27】 将“学生”表和“专业”表进行等值联接。

代码如下。

978-7-111-33494-1-Chapter04-57.jpg

结果如图4-28所示。

注意:

在多表查询时,如果要引用不同表的同名属性,则应在列名前加上表名前缀,即用“表名.属性名”的形式加以区分。

内部联接的运算符也可用于非等值联接,但不常用。

2.自然联接查询

在等值联接查询中,如果SELECT子句中不存在重复列则称为自然联接查询。

978-7-111-33494-1-Chapter04-58.jpg

图4-28 等值联接

【例4-27】 的结果集中存在两个重复的Zyh列,下面的例子讲的就是如何去掉重复列。

【例4-28】 查询学生的学号、姓名、专业名。

代码如下。

978-7-111-33494-1-Chapter04-59.jpg

结果如图4-29所示。

978-7-111-33494-1-Chapter04-60.jpg

图4-29 自然联接

3.自联接查询

一个表可以与自己进行联接,称为自联接。使用自联接的时候必须为表指定别名,以示区别。

【例4-29】 查询至少学过两门课的学生学号。

代码如下。

978-7-111-33494-1-Chapter04-61.jpg

结果如图4-30所示。

978-7-111-33494-1-Chapter04-62.jpg

图4-30 自联接

还可以按下面形式书写代码。

978-7-111-33494-1-Chapter04-63.jpg

4.左向外部联接查询

内部联接消除了与另一个表中的行不匹配的行,而外部联接返回FROM子句中提到的至少一个表的所有行。在左向外部联接中,将返回左表中的所有行,其中左表不满足条件的记录在拼接时,右表的相应列中填充NULL值。(www.xing528.com)

【例4-30】 将“课程”表与“教师”表进行左向外部联接,查看教学任务安排情况。

代码如下。

978-7-111-33494-1-Chapter04-64.jpg

结果如图4-31所示。

978-7-111-33494-1-Chapter04-65.jpg

图4-31 左向外部联接

5.右向外部联接查询

在右向外部联接中,将返回右表中的所有行,其中右表不满足条件的记录在拼接时,左表的相应列中填充NULL值。

【例4-31】 将“课程”表与“教师”表进行右向外部联接,查看教学任务安排情况。

代码如下。

978-7-111-33494-1-Chapter04-66.jpg

结果如图4-32所示。

978-7-111-33494-1-Chapter04-67.jpg

图4-32 右向外部联接

6.完整外部联接查询

在完整外部联接中,将返回两个表的所有行。其中,左表中不满足条件的记录在拼接时,右表的相应列中填充NULL值;右表中不满足条件的记录在拼接时,左表的相应列中填充NULL值。

【例4-32】 将“课程”表与“教师”表进行完整外部联接,查看教学任务安排情况。

代码如下。

978-7-111-33494-1-Chapter04-68.jpg

结果如图4-33所示。

978-7-111-33494-1-Chapter04-69.jpg

图4-33 完全外部联接

7.联接三个或更多的表

在FROM子句中允许使用多个ON实现联接三个或更多的表。

【例4-33】 将“课程”表与“教师”表进行完整外部联接,查看教学任务安排情况。

代码如下。

978-7-111-33494-1-Chapter04-70.jpg

结果如图4-34所示。

978-7-111-33494-1-Chapter04-71.jpg

图4-34 三个表联接

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈