SQL SERVER中的连接查询(内连接,外连接,交叉连接)

连接查询分为三种:内连接,外连接和交叉连接。

  • 内连接:
        内连接Inner Join,和Join是一个东西,Join是Inner Join的缩写。例如:
select * from TestA a inner join TestB b on a.id=b.id
select * from TestA a join TestB b on a.id=b.id
--先连接查询出所有数据(笛卡尔积),再根据限定条件筛选出想要的数据

    内连接返回被连接表的所有列,包括重复列

  • 外连接:
        外连接分为:左外连接,右外连接,全连接
        左外连接(left join),左外连接以左边表为主表,右边表为辅表,返回左表中所有行,如果左表中的行在右表中没有匹配行,那么结果中右表的列返回空值。如果左表和右表是一对多关系,那么查询结果中,左表可能会有大量重复的数据。
        右外连接(right join),右外连接和左外连接刚好相反。
        全连接(full join),全连接就是把左表和右表的数据全部查询出来(左外和右外的综合),如果左表的行在右表没有匹配项,那么结果中右表的列返回空值;同理,如果右表的行在左表中没有匹配项,那么结果中左表中的列就返回空值。

  • 交叉连接:
        交叉连接(cross join),使用交叉连接时,如果不带where条件,那么查询结果就是笛卡尔积,也就是左表中的每一行都会逐条与右表中的每一行数据进行匹配,查询返回的行数就是左表行数和右表行数的乘积。
        带有Where条件就是返回符合限定条件的结果集。

总结
     左连接:以左表为主,左边表的数据肯定会完整展示(可能会有重复),右表没对应的就是null;右连接:以右表为主,右表数据肯定会完整展示(可能会有重复),左表没对应的就是null; 全连接:两个表的数据都会完整展示(也可能会有重复数据); 交叉连接:不带where条件时查询结果就是笛卡尔积

发布了21 篇原创文章 · 获赞 3 · 访问量 351

猜你喜欢

转载自blog.csdn.net/MrLsss/article/details/104078321