【问题标题】:What is the difference between Natural Join and Inner Join?自然连接和内连接有什么区别?
【发布时间】:2023-03-29 11:29:01
【问题描述】:

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 相同。

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

【问题讨论】:

标签: sql


【解决方案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 给出两个表的公共列

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 1970-01-01
    • 2020-06-15
    • 2011-02-12
    • 2014-07-06
    • 2010-10-01
    • 2013-08-25
    相关资源
    最近更新 更多