自然连接与内连接的区别

  • 回答 (2)
  • 关注 (0)
  • 查看 (91)

自然连接和内部连接有什么区别?

嗝屁嗝屁提问于
Uranus寄身测绘,紧追前沿技术的伪架构回答于
已采纳

内部连接和自然连接之间的一个显著差异是返回的列数。

考虑:

TableA                            TableB
Column1    Column2                Column1    Column3
1          2                      1          3

列1上的表A和表B的内部连接将返回

a.column1  a.column2  b.column1  b.column3
1          2          1          3

SELECT * FROM TableA INNER JOIN TableB USING (Column1)
SELECT * FROM TableA INNER JOIN TableB ON TableA.Column1 = TableB.Column1

表A和表B在Column 1上的自然连接将返回:

column1  column2  column3
1        2        3

SELECT * FROM TableA NATURAL JOIN TableB

避免重复列。

okchina软件工程硕士 Java攻城狮回答于
  • 内层联接是在联接表中要求返回第一个表中的一行的匹配行。
  • 联接是连接表中的匹配行为返回第一个表中的一行所必需的
  • 天然联接是一个连接(您可以选择natural leftnatural right),它假定连接条件是两个表中同名列匹配的位置。

我会避免像瘟疫一样使用自然连接,因为自然连接是:

  • 不标准的SQL,因此也不是可移植的,不是特别可读的(大多数SQL编码程序),而且可能不被各种工具/库所支持。
  • 不提供信息;如果不引用架构,则无法判断正在连接哪些列。
  • 联接条件显然容易受到模式更改的影响--如果有多个自然连接列,并且从表中删除了一个这样的列,则查询仍将执行,但可能不正确,而且这种行为更改将保持沉默。
  • 这不值得,你只需要花费大约10秒的时间

扫码关注云+社区