连接表,包括:内连接、左连接、右连接、全外连接、交叉连接

1.内连接

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

语法:

①在from子句中指定主表(t1);

②在 inner join 子句和连接谓词中指定第二个表(t2);

③只有连接谓词计算 true 的行才包 含在结果集中;

④inner join子句将表 t1 的每一行与表t2的行进行比较,以查找满足连接谓词的所有行对;

⑤如果连接谓词结果为 true ,则匹配 t1 t2 行的列值将合并为一个新行并包含在结果集中

     T1表和 T2表的内连接结果图:

      

   内连接的例子:

       

2.左连接

   语法:

         

①left join 子句用于查询来自多个表的数据。它返回左表中的所有行和右表中的匹配行

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

③left join句子返回左表( t1)中的所有行以及右表( t2 )中匹配的行或 null

T1表和T2表的左连接结果图:

     

左连接的例子:

        

3.右连接

   语法:

        

①right join句子组合来自两个或多个表的数据;

②right join 开始从右表中选择数据并与左表中的行匹配;

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

④如果右表中的行没有来自右表的任何匹配行,则结果集中右表的列将使用 null

注意:right join right outer join是相同的。outer是关键字

  T1表和T2表的右连接结果图:

      

 右连接的例子:

     

4.全外连接

full outer join 当左表或右表中存在匹配项时,该命令将返回所有行。

全外连接的例子:

注意:full outer join关键字返回左表(customer)所有行,以及所有来自右表(orders)的行。

如果customer表中的某些行在orders表中没有匹配项,

或在orders表中的某些行在customer表中没有匹配项,

则这些行也将被列出。

5.交叉连接

①cross join连接两个或多个不相关的表;

②cross join将第一个表(t1)中的每一行与第二个表(t2)中的每一行连接起来;

③交叉连接返回两个表中行的笛卡尔积;

④若t1表中有n行,t2表中有m行,交叉连接则产生n×m

交叉连接的例子:

6.自连接

①自连接用于同一个表,对于查询分层数据或比较同一个表中的行很有用;

②自连接使用内连接或左连接子句;

③由于使用自连接的查询引用同一个表,因此表别名可分配不同的名称

注意:如果在不使用表别名的情况下,在查询中多次引用同一个表,则会出现错误。

   自连接的例子:

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐