当前位置:学学看123知识中心电脑教学数据库教程四种链接的区别及用法» 正文

四种链接的区别及用法

[06-11 18:16:48]   来源:http://www.xxk123.com  数据库教程   阅读:8800

导读:第三节 四种链接的区别及用法链接:作为动词,它表示将两个或多个表的内容结合在一起并产生一个结果集,该结果集对每个表的列和行进行合并。表的联接一般都使用它们共有的数据。例如,您可以对有一个共同 pub_id 列的 titles 表和 publishers 表联接,产生一个包含书名信息和出版商信息的结果集。作为名词,表示对表进行联接的过程或结果,如在术语"内部联接"中表示对表联接的一种特殊的方法。联接条件(join condition)一个比较子句,它指定了表是如何通过它们的联接字段相联系的。最普通的联接条件是相等(一个等联接),在等联接中联接字段的值必须相同。例如,您可以通过在 titles 表和 publishers 表的 pub_id 列中查找相匹配的值联接这两个表。然而,任何比较运算符都可以是比较条件的一部分。内部联接(inner join)一个联接,在该联接中只有当联接字段的值满足某些特定的准则时才将两个表的记录进行结合并添加到一个查询结果中。例如,在查询设计器视图中,表之间的缺省联接是一个内部联接,它只有当联接字段的值相等

四种链接的区别及用法,标签:sql数据库教程,access数据库教程,http://www.xxk123.com

第三节 四种链接的区别及用法

  • 链接:

作为动词,它表示将两个或多个表的内容结合在一起并产生一个结果集,该结果集对每个表的列和行进行合并。表的联接一般都使用它们共有的数据。例如,您可以对有一个共同 pub_id 列的 titles 表和 publishers 表联接,产生一个包含书名信息和出版商信息的结果集。

作为名词,表示对表进行联接的过程或结果,如在术语"内部联接"中表示对表联接的一种特殊的方法。

  • 联接条件(join condition)

一个比较子句,它指定了表是如何通过它们的联接字段相联系的。最普通的联接条件是相等(一个等联接),在等联接中联接字段的值必须相同。例如,您可以通过在 titles 表和 publishers 表的 pub_id 列中查找相匹配的值联接这两个表。然而,任何比较运算符都可以是比较条件的一部分。

  • 内部联接(inner join)

一个联接,在该联接中只有当联接字段的值满足某些特定的准则时才将两个表的记录进行结合并添加到一个查询结果中。例如,在查询设计器视图中,表之间的缺省联接是一个内部联接,它只有当联接字段的值相等时才从两个表中选择记录。

  • 外部联接(outer join)

一个联接,该联接还包括那些和联接表中记录不相关的记录。您可以创建一个外部联接的三种变形来指定所包括的不匹配行:左外部联接、右外部联接和完全外部联接。

  • 左外部联接(left outer join)

一种外部联接类型,在该联接中包括第一个命名表(左边的表,它出现在 JOIN 子句的最左边)的所有行。右边表中没有匹配的行不出现。例如,您可以在 titles 表和 publishers 表之间创建一个左外部联接,以包括所有的书名,不论书名有无出版商的信息。

  • 右外部联接(right outer join)

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

以上是MSDN中对链接的定义。现在我们就从这四种链接所使用的不同方法来看他们的结果有什么不同。

titles 表sh(书号)ph(出版商编号)232342001043200382478123005

publishers 表
ph(出版商编号) mc(出版商名称)
001 红虎
002 rmh
003 hazl

现要把这两个表的内容合成如下的表结构:

sh(书号)    ph(出版商编号)        mc(出版商名称)

现在看看采用四种链接方法的结果会有什么不同。先说说他们的命令:

内联接:
sele titles.sh,publishers.ph,publishers.mc ;
  from titles inner join publishers ;    &&内联接中的inner是可以省略的
    on titles.ph=publishers.ph

外联接:
sele titles.sh,publishers.ph,publishers.mc ;
  from titles outer join publishers ;
    on titles.ph=publishers.ph

左联接:
sele titles.sh,publishers.ph,publishers.mc ;
  from titles left join publishers ;
    on titles.ph=publishers.ph

右联接:
sele titles.sh,publishers.ph,publishers.mc ;
  from titles right join publishers ;
    on titles.ph=publishers.ph

大家可能看到,除了在join之前的那个关键字不同之外,其他地方是一模一样的,链接条件(即on那一部分)也是一样的。结果:

内链接:

232342001红虎0432003hazl

全链接:

232342001001红虎NullNull002rmh0432003003hazl82478123005NullNull

左链接:

232342001001红虎0432003003hazl82478123005NullNull

右链接:

232342001001红虎NullNull002rmh0432003003hazl

所以我们很容易记住:

1、左链接:就是以join的左边那个表为"主",以titles.ph=publishers.ph为判断标准,不管右边的表有没有对应的记录,都要把左边表的记录放在结果中去,但右边表没有相应的记录那应该放个什么数值进去?答案是就放个Null,表示没有。在左链接中,某记录在右边表,却不在左边表,那是不放进去结果去的,原因是左边表才是"主",要不要放由它决定:它有的,就一定放进去,它没有的,就不要了。

[1] [2] [3]  下一页


Tag:数据库教程sql数据库教程,access数据库教程电脑教学 - 数据库教程
《四种链接的区别及用法》相关文章

Copyright 学学看123 All Right Reserved.

1 2 3 4 5 6 7 8 9 10