数据库左外连接和右外连接,mysql内连接和左连接的区别
数据中的连接join分为内连接、自然连接、外连接,外连接分为左外连接、右外连接、全外连接
表1
当然,所有这些分类都是基于连接的,从两个表中记录的直积中选择满足连接的记录。 笛卡儿积简单地说,一个表中的记录和另一个表中的记录匹配一个记录。 也就是说,如果表a中有三条记录,则表b中也应该有三条记录,经过笛卡尔运算后应该有3*3即9条记录。 下表:
表21 .自然连接(natural join )自然连接是一种特殊的等价连接,在两个关系表中要比较的必须是相同的属性列,不需要添加连接条件,需要从结果中删除重复的属性列。
sql语句: Select …… from表1 natural join表2
结果:
2 .内连接(inner join )内连接基本上与自然连接相同,但自然连接要求比较同名的属性列,而内连接中两个属性列不必同名。 可以使用using或on指定两列中的字段相同的连接条件。
sql语句: select . from表1 inner join表2 on表1.A=表2.E
结果:
少了一个元组(1、2、3、8、9、1 ) )。
如果连接时某些属性值不同,则会丢弃这些元组。 那么,如何保存这些丢失的信息呢? 外部连接解决了相应的问题。 外部连接包括左外部连接、右外部连接和全外部连接。 外连接必须在using或on中指定连接条件。
3 .左外连接(left outer join )左外连接对两个表进行自然连接,只在结果集中保留左表丢弃的内容,并在右表的相应列中填充null。
sql语句: select . from表1 left outer join表2 on表1.C=表2.C
结果:
4 .右外连接(rignt outer join )右外连接对两个表进行自然连接,只将右表丢弃的内容保留在结果集中,用空值填充左表中的相应列。
选择……from表1 rignt outer join表2 on表1.C=表2.C
结果:
5 .全外连接(full join )全外连接对两个表进行自然连接,只将左表和右表都要舍弃的内容保留在结果集中,并在对应的列中填入null。
选择……from表1 full join表2 on表1.C=表2.C
结果: