自然连接和内连接有啥区别?
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 之间的自然联接与列 abc
和 def
上的内部联接相同。
无法用自然连接替换的内连接:
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 给出两个表的公共列
【讨论】:
以上是关于自然连接和内连接有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章