left join、right join、inner join和full join的区别?

left join、right join、inner join和full join的区别?

inner join:
内连接,在两张表进行连接查询的时候只保留两张表完全匹配的结果集
left join :
在两张表连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录
right join:
在两张表进行连接查询时,会返回右表所有的行,即使左表中没有匹配的记录
full join:
在两张表进行连接查询时,返回左表和右表中所有没有匹配的行

### 不同类型的SQL连接操作的区别用法 #### Inner Join `INNER JOIN` 返回两个表中满足连接条件的记录。这意味着只有当左表右表都存在匹配的数据时,才会返回这些数据。 ```sql SELECT * FROM TableA AS A INNER JOIN TableB AS B ON A.id = B.id; ``` 此查询仅会显示那些在 `TableA` `TableB` 中都有对应 `id` 值的行[^1]。 #### Left Join `LEFT JOIN` (也称为 `LEFT OUTER JOIN`)返回左表中的所有记录,即使右表中不存在匹配项。对于没有找到匹配的情况,在结果集右边会出现 NULL 值。 ```sql SELECT * FROM TableA AS A LEFT JOIN TableB AS B ON A.id = B.id; ``` 这段代码将展示来自 `TableA` 的每一行;如果 `TableB` 中有相应的匹配,则一起呈现;如果没有,则填充 NULL[^4]。 #### Right Join `RIGHT JOIN` 是 `LEFT JOIN` 的镜像版本——它保留右侧表格的所有条目,并补充左侧可能存在的任何关联数据。同样地,缺少的部分会被标记为 NULL。 ```sql SELECT * FROM TableA AS A RIGHT JOIN TableB AS B ON A.id = B.id; ``` 这里的结果将是基于 `TableB` 完整性的集合,加上从 `TableA` 获取的相关信息。 #### Full Join `FULL JOIN` 或者说是 `FULL OUTER JOIN` 将两者的特性结合起来,即无论哪一侧是否有匹配,都会列出所有的组合情况。因此,最终得到的是两张原始表各自独立以及交叉部分的整体视图。未配对的地方则由 NULL 补充完整。 ```sql SELECT * FROM TableA AS A FULL JOIN TableB AS B ON A.id = B.id; ``` 上述语句能够提供最全面的信息覆盖度,因为它不仅包含了共同拥有的项目,还包括了单独存在于任一表内的实体[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值