数据库中内连接、外连接、左连接、右连接、全连接、交叉连接的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zgcr654321/article/details/82800549

内连接:

内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。利用内连接可获取两表的公共部分的记录。

又细分为三种:

等值连接:

在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

不等值连接:

在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

自然连接:

在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

外连接:

外链接(outer join)与内连接是相反的,就是说,如果某张表中的数据在另一张中找不到对应的条目并不影响它依然出现在查询的结果中,这对于两张表都是满足的,两边都有出现null的可能,有点像数学中的并集。

左(外)连接:

左连接(left join)即为两张表进行连接时,是以处于left join语句左侧的表为基准去匹配left join语句右边的表,如果左表中的一条数据在右表中能找到与之对应的一条数据,那么就会出现在以虚表形式存在的结果表中,如果没有找到,那么会以null来代替右表中的数据去匹配左表。左连接时左边的表是全部数据,右边的只有符合条件的才有数据。

右(外)连接:

右连接(right join)本质上是相当于将上述的左连接的这个过程反过来,以连接语句right join右侧的表为基准去匹配左边的表,右连接是处于right join右边的表是全部数据,左边的符合条件的有数据。

全(外)连接:

全连接(full join)完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。   

注意:

MySQL中没有全(外)连接。

交叉连接:

左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。

猜你喜欢

转载自blog.csdn.net/zgcr654321/article/details/82800549