数据库联结(inner join/join/outer join/left join/right join/full outer join)

SQL中inner join,outer join和cross join的

嘿嘿,我们来说说数据库里的事情,尤其是SQL中的合并操作,这是连接表数据的法宝。
您是否知道连接操作有不同类型,例如内连接、外部连接和交叉连接,每种类型都有自己的特点。

例如,内连接仅返回两个表中匹配的行。
简单来说,就是他们的交集。
例如,在之前的项目中,我写了一个查询:SELECT FROM TableA INNER JOIN TableB ON TableA.name = TableB.name,仅此而已。

我们来谈谈外部连接,这个东西不同,它给你更完整的结果。
左外部连接(或简称左连接),无论B表是否有匹配,都会返回A表中的所有记录。
如果没有匹配,则会用NULL填充。
相反,右外连接(或简称右连接)返回B表中的所有记录。
A表中匹配的记录有值,不匹配的记录替换为NULL。
记得有一次在系统中做数据同步的时候,不得不使用合并权限。

还有全外部连接(或简称全连接),它帮你把A、B记录结合起来,不匹配的用NULL填充,也就是前两条的并集。
例如,我编写了这样的查询: SELECT FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name WHERE TableA.id IS NULL OR TableB.id IS NULL。

然后是交叉联接(或笛卡尔联接),它将两个表中的每条记录配对,形成一个 NM 结果集。
但由于数据量可能太大,我们在开发时很少直接使用,所以需要添加过滤条件。

简而言之,选择哪种类型的联接取决于您的结果数据完整性要求以及您是否要包含不匹配的记录。
实际操作中需要根据具体业务场景灵活使用。
说实话,我当时没想过,慢慢就明白了。

sql中的innerjoin和join有什么区别