自然连接和内连接有啥区别?

Posted

技术标签:

【中文标题】自然连接和内连接有啥区别?【英文标题】:What is the difference between Natural Join and Inner Join?自然连接和内连接有什么区别? 【发布时间】:2013-09-15 15:46:21 【问题描述】:

The most common type of join is: SQL INNER JOIN (simple join). An SQL INNER JOIN return all rows from multiple tables where the join condition is met.

这就是W3Schools 所说的内部连接。我正在阅读 Korth 的数据库管理,其中一章是关于关系代数的。其中,有一个Natural Join,在我有限的理解中,它与Inner Join 相同。

谁能告诉我这两者之间是否有区别,或者它们是指同一事物的不同名称。

【问题讨论】:

***.com/questions/8696383/… 的副本。 【参考方案1】:

自然连接是内连接的一种形式,其中连接隐含地跨越连接两侧匹配名称的所有列。

例如

Table A
abc int
def int
ghi varchar(20)

Table B
abc int
def int
jkl int

表 A 和 B 之间的自然联接与列 abcdef 上的内部联接相同。


无法用自然连接替换的内连接:

TableA
   inner join
TableB
   on
       TableA.Column1 = TableB.Column2 --Column names don't match

TableA
   inner join
TableB
   on
       TableA.Column1 >= TableB.Column1 --Not equality

【讨论】:

那么内连接的其他形式是什么? @LittleChild - 连接条件在两边使用不同列的任何连接,或者不是基于相等的连接。 自然连接 = 等连接? @LittleChild equijoin 是任何基于相等条件的连接。任何自然连接都是等连接,但不是任何等连接都是自然连接。 用维恩图画出来就明白了。【参考方案2】:

Natural Join 和 Inner Join 不是相同的命令。 Natural Join 是根据公共列的值相等而不在查询中输入条件来连接表......而 Inner Join 是根据查询中指定的条件连接表,可以是“=”或“>=” " 或 "

自然连接:

tab1 自然连接 tab2;

这将自动检查公共列的值是否相等

内连接:

tab1 INNER JOIN tab2 ON(条件);

此外,NATURAL JOIN 在查询的输出中给出一次公共列,而 INNER JOIN 给出两个表的公共列

【讨论】:

以上是关于自然连接和内连接有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

SQL内连接与外连接的区别

左、右、外连接和内连接有啥区别? [复制]

SQL中的自然连接是啥意思啊?

SQL内连接与外连接用法与区别

SQL内连接与外连接用法与区别

sql子查询和连接查询的区别是啥呢?