第四节 union的使用,第1张

第四节 union的使用,第2张

第三节四个环节的区别和用法

Link:
作为动词,表示将两个或多个表的内容合并,产生一个结果集,该结果集合并每个表的列和行。表的连接通常使用它们的公共数据。例如,您可以用一个公共的pub_id列连接titles表和publishers表,以生成包含书名信息和出版商信息的结果集。

作为名词,指的是连接表的过程或结果。例如,在术语“内部连接”中,它指的是连接表的一种特殊方法。

Join Condition
一个比较子句,指定表如何通过它们的联接字段相关联。最常见的连接条件是相等(相等连接),其中连接字段的值必须相同。例如,可以通过在pub_id列中查找匹配值来联接titles表和publishers表。但是,任何比较运算符都可以是比较条件的一部分。

内部联接
只有当联接字段的值满足某些特定条件时,两个表的记录才被组合并添加到查询结果中的联接。例如,在查询设计器视图中,表之间的默认联接是内部联接,只有当联接字段的值相等时,才会从两个表中选择记录。

外部联接
也包括那些与联接表中的记录不相关的记录的联接。您可以创建外部联接的三种变体来指定包含的不匹配行:左外部联接、右外部联接和全外部联接。

Left outer JOIN
一种外部联接,其中包含第一个命名表(左侧表,出现在JOIN子句的最左侧)的所有行。右表中没有匹配的行不会出现。例如,您可以在titles表和publishers表之间创建一个左外部联接,以包括所有的图书,而不管这些图书是否有出版商信息。

右外部联接
一种外部联接,其中包含第二个命名表(右表,出现在JOIN子句的最右侧)的所有行。不要在左侧表格中包含不匹配的行。例如,titles表和publishers表之间的右外连接将包括所有出版商,甚至包括那些在titles表中没有书名的出版商。

以上是MSDN对link的定义。现在让我们看看这四个环节使用的不同方法,看看它们的结果有什么不同。

书名表
sh(书号)ph(出版者号)
232342001
0432003
82478123005
出版者表
ph(出版者号)mc

现在,我们想将这两个表的内容合成为下面的表结构:

Sh(书号)ph(出版者编号)mc(出版者名称)
现在来看看如果采用四种链接方式,结果会有什么不同。让我们来谈谈他们的订单:

内部联接:
seletitles.sh,publishers.ph,publishers.mc
来自标题内部联接发布者;& &可以省略内部联接中的inner
on titles . ph = publishers . ph。

外部连接:
seletitles.sh,publishers.ph,publishers.mc
来自标题外部联接出版商;
on titles

Left join:
seletitles.sh,publishers.ph,publishers.mc
从图书离开加入出版商;
on titles

右联接:
seletitles.sh,publishers.ph,publishers.mc
从出版权加入出版者;
on titles

大家可能看到了,除了join之前的关键字,其他地方完全一样,链接条件(也就是on部分)也是一样的。结果:

内部链接:

22342 001红虎
0432 003 hazl
完整链接:

22342 001 001红虎
NULL NULL 002 RMH
0432 003 003 HASL
82478123 005 NULL NULL
左链接:

22342 001 001红虎
0432 003 003 HAZL
82478123 005 NULL NULL
右链接:

32342 001 001红虎
NULL NULL 002 RMH
0432 003 003 HAZL
所以我们很容易记住:

1.左链接:join左边的表作为“主”,titles.ph=publishers.ph作为判断标准。不管右表有没有对应的记录,都要把左表的记录放到结果里,但是右表没有对应的记录。应该放什么值进去?如果答案是肯定的,则输入Null表示否定。在左边的链接中,右表中的记录,而不是左表中的记录,不会被输入结果。原因是左桌是“主”。放不放由它自己决定:它有东西,就一定要放进去;如果没有,就不会。

2.右链接:和左链接一样,只是转移了“主”的一面,用右边作为“主”。

3.内部链接:与左右链接不同,它必须在左右两边都有记录,才能放入结果。如果记录在任一侧都不存在,它将不会出现在结果中。

4.外链:和内链一样,但是相当于左右链的合并。不管怎样,只要有一条记录出现在这两个表中,就一定会出现在结果中。然后,就像左右链接一样,使用Null来填充没有对应值的字段。

注:以上“是”和“否”表示titles.ph=publishers.ph作为判断标准来做决定。例如,当前titles表的ph值为“002”,但在publishers中,没有记录的ph值为“002”,所以说“002”的值存在于titles中,但不存在于publishers中,这样就会选择titles.ph值为“002”的记录,并最终放入结果中。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 第四节 union的使用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情