等值连接:“=”的连接
自然连接:在等值连接的情况下,当连接属性X与Y具有相同属性组时,把在连接结果中重复的属性列去掉。即如果R与S具有相同的属性组Y,则自然连接可记作:
R*S={t r⌒ts |tr∈R∧ts∈S∧tr[Y]=ts[Y]}
自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。
如
表:Table_1
A | B | C | |
1 | a1 | b1 | 2 |
2 | a1 | b2 | 4 |
3 | a2 | b3 | 6 |
4 | a2 | b4 | 8 |
表:Table_2
B | D | |
1 | b1 | 5 |
2 | b2 | 6 |
3 | b3 | 7 |
4 | b3 | 8 |
等值连接
select *
from Table_1 t1, Table_2 t2
where t1.C = t2.D
A | t1.B | C | t2.B | D | |
1 | a2 | b3 | 6 | b2 | 6 |
2 | a2 | b4 | 8 | b3 | 8 |
select *
from Table_1 t1, Table_2 t2
where t1.B = t2.B
A | t1.B | C | t2.B | D | |
1 | a1 | b1 | 2 | b1 | 5 |
2 | a1 | b2 | 4 | b2 | 6 |
3 | a2 | b3 | 6 | b3 | 7 |
4 | a2 | b3 | 6 | b3 | 8 |
自然连接
A | B | C | D | |
1 | a1 | b1 | 2 | 5 |
2 | a1 | b2 | 4 | 6 |
3 | a2 | b3 | 6 | 7 |
4 | a2 | b3 | 6 | 8 |
即:(如果看不到图,请参照相册《等值连接和自然连接》)
结合上例,我们可以看出等值连接与自然连接的区别:
1. 等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。如上例R中的C列和S中的D列可进行等值连接,但因为属性名不同,不能进行自然连接。
2. 等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。如上例R中的B列和S中的B列进行等值连接时,结果有两个重复的属性列B,而进行自然连接时,结果只有一个属性列B。