一、连接表

    在关系数据库中,数据分布在多个逻辑表中。 要获得完整有意义的数据集,需要使用连接来查询这些表 中的数据。

SQL Server支持多种连接,包括 [内连接],[左连接],[右连接],[全外连接]和[交叉连接]。

每种连接类型指定SQL Server如何使用一个表中的数据来选择另一个表中的行。

由于篇幅有限,这次只讲3种连接:[内连接],[左连接],[右连接]。

二、内连接。

内连接是SQL Server中最常用的连接之一。 内部联接子句用于查询来自两个或多个相关表的数据。

连接语句:inner join;  

关联语句:on;

SQL server 2008中表关联 sql数据库表关联_SQL server 2008中表关联

内连接查询出来的结果集。

SQL server 2008中表关联 sql数据库表关联_结果集_02

三、左连接。

    Left join子句用于查询来自多个表的数据。

它返回左表中的所有行和右表中的匹配行。

如果在右表中找不到匹配的行,则使用 NULL 代替显示。

以下图说明了两个结果集的左连接结果:

SQL server 2008中表关联 sql数据库表关联_经验分享_03

黄色部分表示返回的结果集

以下是左连接的大致语法

SQL server 2008中表关联 sql数据库表关联_数据_04

对于 T1 表中的每一行,查询将其与 T2 表中的所有行进行比较。

如果一对行导致连接谓词计算为 TRUE ,则将组合这些行中的列值以形成新行,然后将其包含在结果集

中。

如果左表( T1 )中的行没有与来自 T2 表的任何匹配行,则查询将左表中的行的列值与来自右表的每个列

值的 NULL 组合。

Left join 子句返回左表( T1 )中的所有行以及右表( T2 )中匹配的行或 NULL 值 ,但我们使用左连接时,一般都是为了结果集中,含有NULL值的行。

如:一个商店数据库中,有产品表,和订单表,我们想要知道,这个商店有哪些产品没有出售过。那么就可以使用左连接,左表为产品表,右表为订单表,中间交互的为拥有订单记录的产品。

SQL server 2008中表关联 sql数据库表关联_SQL server 2008中表关联_05

 

  • 右连接。

Right join子句组合来自两个或多个表的数据。Right join开始从右表中选择数据并与左表中的行

匹配。Right join返回一个结果集,该结果集包含右表中的所有行,无论是否具有左表中的匹配行。

如果右表中的行没有来自右表的任何匹配行,则结果集中右表的列将使用 NULL值。 恰好与左连接相反。

以下是Right join的语法:

SQL server 2008中表关联 sql数据库表关联_结果集_06

下图说明了 RIGHT JOIN 操作:

  

SQL server 2008中表关联 sql数据库表关联_SQL server 2008中表关联_07

橙色部分表示返回的结果集。