一、连接表。
在关系数据库中,数据分布在多个逻辑表中。 要获得完整有意义的数据集,需要使用连接来查询这些表 中的数据。
SQL Server支持多种连接,包括 [内连接],[左连接],[右连接],[全外连接]和[交叉连接]。
每种连接类型指定SQL Server如何使用一个表中的数据来选择另一个表中的行。
由于篇幅有限,这次只讲3种连接:[内连接],[左连接],[右连接]。
二、内连接。
内连接是SQL Server中最常用的连接之一。 内部联接子句用于查询来自两个或多个相关表的数据。
连接语句:inner join;
关联语句:on;
内连接查询出来的结果集。
三、左连接。
Left join子句用于查询来自多个表的数据。
它返回左表中的所有行和右表中的匹配行。
如果在右表中找不到匹配的行,则使用 NULL 代替显示。
以下图说明了两个结果集的左连接结果:
黄色部分表示返回的结果集
以下是左连接的大致语法
对于 T1 表中的每一行,查询将其与 T2 表中的所有行进行比较。
如果一对行导致连接谓词计算为 TRUE ,则将组合这些行中的列值以形成新行,然后将其包含在结果集
中。
如果左表( T1 )中的行没有与来自 T2 表的任何匹配行,则查询将左表中的行的列值与来自右表的每个列
值的 NULL 组合。
Left join 子句返回左表( T1 )中的所有行以及右表( T2 )中匹配的行或 NULL 值 ,但我们使用左连接时,一般都是为了结果集中,含有NULL值的行。
如:一个商店数据库中,有产品表,和订单表,我们想要知道,这个商店有哪些产品没有出售过。那么就可以使用左连接,左表为产品表,右表为订单表,中间交互的为拥有订单记录的产品。
- 右连接。
Right join子句组合来自两个或多个表的数据。Right join开始从右表中选择数据并与左表中的行
匹配。Right join返回一个结果集,该结果集包含右表中的所有行,无论是否具有左表中的匹配行。
如果右表中的行没有来自右表的任何匹配行,则结果集中右表的列将使用 NULL值。 恰好与左连接相反。
以下是Right join的语法:
下图说明了 RIGHT JOIN 操作:
橙色部分表示返回的结果集。