2013-02-02 39 views
0

我正在寻求Natural和Equi Join之间的区别,当一个表(P)中的公共列是唯一的,但在其他(Q)中不唯一时。那么将显示来自其他表(Q)的哪些行,由于Q中的公共列不是唯一的,所以存在问题,那么将会有如此多的行与Q中的那个公共属性的单个相同值相关联。Natural Vs Equi加入

两者都在'='比较器上运行。自然连接自动找出公共列并隐式应用'='比较器。

说两个表

P(a(unique),b,c) and Q(a(not unique),d) 

,如果我申请P natural join QP equi join Q

然后该行将在自然生成加盟和元组相等加入? 表示将显示来自表Q的行中的哪一行(作为'a'的相同值与Q中的许多行相关联但P中不是如此)。 会有区别吗??

+0

我需要得到这些连接之间的差异,当一个表中的公共列是唯一的而不是唯一的。 – codeofnode

回答

1

自然连接只是简单的等待连接。当相同的列用于比较时,应该创建相同的元组。

数据库开发人员倾向于不喜欢自然连接。表中列的添加,删除或重命名可影响现有查询。而且,一般来说,如果我们可以避免它,我们不想破坏现有的代码。

就个人而言,我更喜欢在表格中的列上显式命名条件。外键应该与主键具有相同的名称,所以清楚它们指的是什么。我也更喜欢连接的“身份”或“自动递增”主键。然而,这是偏离你的问题。当自然连接为连接选择相同的列时,应该生成相同的元组。

+0

当一个表中的列是唯一的而不是唯一的时,我需要获得这些连接之间的区别。将显示来自表Q的行中的哪一行(作为'a'的相同值与Q中的许多行相关联但P中不是这样的行)将被显示。 – codeofnode

+0

@Rambo。 。 。所有匹配的行都将显示出来,可以是任何类型的连接。 –