SQL内连接和自然连接

时间:2017-06-01 17:21:42

标签: mysql join

所以我对我正在研究的旧试卷有一些具体的问题,为实际考试做准备。这是一个非常基础的层面,但我只是需要帮助来理解某些特定任务的结果。

内部加入和自然加入:

I do apologize for uploading it in image

形式,希望没关系。 我的第一个问题是1.声明如下:

Select * From r INNER JOIN s ON r.F=s.F

为什么在进行内部连接时,12行会被删除,而不是20?

第二个问题是关于以下声明:

Select E, G From r NATURAL JOIN s;

同样,它是否特别从行E中删除了12个而不是20个?

我再次为图像的可怕设置道歉而不是,希望有人可以向我解释这个非常简单的任务的结果。

提前致谢

亲切的问候

2 个答案:

答案 0 :(得分:0)

要了解不同类型的连接,请看一下: enter image description here

正如您所看到的,在您的情况下,内部匹配两个表共有的元素:

r在F栏中有[5,15,20] a在F栏中有[5,15,20]

因此,值将为[5,15],并且当您执行select *时,它将从两个表中选择所有列,但不重复具有共同列的名称

Select * From r INNER JOIN s ON r.F=s.F

结果表r:

E   F  G
10  5  20
20  15 30

答案 1 :(得分:0)

Select * From r INNER JOIN s ON r.F=s.F

结果将是

E  F  F  G
10 5  5 30
20 15 15 20

INNER JOIN关键字选择两个表中具有匹配值的记录。这就是为什么12被删除,即没有共同的列。 现在是

的结果
Select E, G From r NATURAL JOIN s

E  G
10 30
20 20

当您使用* on select时,

F  E   G
5  10 30
15 20 20

在自然连接上使用*时,它将扩展为以下列列

  • 所有常用列
  • 第一个(左)表中的每个列都不是公共列
  • 第二(右)表中的每列不是公共列