SQL 等值连接(内连接)、自然连接(Out join,Left join,Right join)的区别

连接join 是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。

连接运算中有两种最为重要也最为常用的连接,一种是等值连接,一种是外连接。

 

等值连接

SQL 等值连接(内连接)、自然连接(Out join,Left join,Right join)的区别

关系R与关系S 等值连接后的结果

SQL 等值连接(内连接)、自然连接(Out join,Left join,Right join)的区别

 

自然连接(natural join)

自然连接是一种特殊的等值连接。比较两幅图就可以看出,自然连接在结果中把重复的属性列去掉

一般的连接操作是从行的角度进行运算,但是自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

在关系数据库中,数据库的重构往往是不可避免的。重构数据库最常见的是将一个基本表“垂直”地分成多个基本表。例如:将学生关系:

Student(Sno, Sname, Ssex, Sage, Sdept)

分为SX(Sno, Sname, Sage)和SY(Sno, Ssex, Sdept)两个关系。这时原表Student为SX表和SY表自然连接的结果

SQL 等值连接(内连接)、自然连接(Out join,Left join,Right join)的区别

 

-------------------------------------------------------

 

外连接(outer join)

SQL 等值连接(内连接)、自然连接(Out join,Left join,Right join)的区别

 

左外连接(Left Outer Join)

SQL 等值连接(内连接)、自然连接(Out join,Left join,Right join)的区别

Left Join 就是一定要把左边保证了,右边没有的就填NULL

 

右外连接(Right Outer Join)

SQL 等值连接(内连接)、自然连接(Out join,Left join,Right join)的区别

Right Join 就是一定要把右边保证了,左边没有的就填NULL

 

总结

SQL 等值连接(内连接)、自然连接(Out join,Left join,Right join)的区别

 

Left join 是 Left outer join 的简称
Right join 是 Right outer join 的简称

在做自然连接时被舍弃的元组叫悬浮元组(dangling tuple)

Left outer join就是保留了左边关系R中的悬浮元组
Right outer join就是保留了右边关系S中的悬浮元组
Outer join就是把悬浮元组保存在结果中,在其他属性上填NULL

 

原文:https://www.jianshu.com/p/01063fa0b40d