当一个表(P)中的公共列是唯一的但在其他(Q)中不唯一时,我正在寻找Natural和Equi Join之间的区别。然后会显示其他表(Q)中的哪一行,问题是因为Q中的公共列不唯一,所以在Q中会有很多行与该公共属性的单个相同值相关联。
两者都在'='比较器上运行。只是自然连接自动找出公共列并隐式应用'='比较器的区别。
说两个表
P(a(unique),b,c) and Q(a(not unique),d)
如果我申请P natural join Q
和P equi join Q
然后在Natural连接中生成哪些行以及在Equi连接中生成哪些元组。 表示表Q中的哪一行(与'a'的相同值与Q中的许多行相关但在P中不是这样)将显示...? 会不会有差异......?
答案 0 :(得分:0)
自然连接只是equi-join的简称。当相同的列用于比较时,应该创建相同的元组。
数据库开发人员往往不喜欢自然连接。在表中添加,删除或重命名列可能会影响现有查询。而且,一般来说,如果我们可以避免它,我们不想破坏现有代码。
就个人而言,我更喜欢表中列的显式命名条件。外键应与主键同名,因此很清楚它们所指的是什么。我也更喜欢连接的“身份”或“自动增加”主键。然而,这偏离了你的问题。当自然连接为连接选择相同的列时,应生成相同的元组。