0

所以我们在 SQL 中遇到的各种类型的连接是:

1.加入

2.自然加入

3.内连接

4.外连接(左、右、全)

5.交叉连接

我需要清楚地了解 JOIN、NATURAL JOIN 和 CROSS JOIN 之间的区别

在 w3schools.com,我使用了 JOIN 和 NATURAL JOIN 查询并得到以下结果

1.查询JOIN。

SELECT *
FROM Orders
JOIN Customers;

JOIN 查询的输出(无法看到邮政编码和国家/地区列,但它们在那里)

2.查询自然连接。

SELECT *
FROM Orders
NATURAL JOIN Customers;

自然连接的输出

我是一个初学者,我不清楚 JOIN 和 NATURAL JOIN 关键字的概念,因为互联网上的资料不够,或者如果有的话,我不清楚这两个关键字之间的混淆。

我不明白为什么 2 个关键字获取的记录数量如此不同。请深入解释这里发生了什么。提前致谢。

4

1 回答 1

0

加入

SELECT *
  FROM orders o
  JOIN customers c
    ON o.customerid = c.customerid

结果

orderid, orderdate,  customerid, customerid, customername
10248,   1996-04-07, 1,          1,          Alfreds Futterkitse
10248,   1996-04-07, 2,          2,          Ana Trujillo
10248,   1996-04-07, 3,          3,          Antonio Moreno
10248,   1996-04-07, 4,          4,          Around the Horn
10248,   1996-04-07, 5,          5,          Berglunds snabbkop

NATURAL JOIN 中避免了重复的列

自然加入

 SELECT *
   FROM orders o
NATURAL JOIN customers c

结果

customerid, orderid, orderdate,  customername
1,          10248,   1996-04-07, Alfreds Futterkitse
2,          10248,   1996-04-07, Ana Trujillo
3,          10248,   1996-04-07, Antonio Moreno
4,          10248,   1996-04-07, Around the Horn
5,          10248,   1996-04-07, Berglunds snabbkop

由于您选择了*,因此订单中的customerid 和customers 都会显示在JOIN 中,但在NATURAL JOIN 中,只会显示一个customerid 列。

于 2017-08-22T00:04:04.397 回答