在Mysql中连接主要有内连接和外连接,本篇文章主要讲解这俩种连接。
表的定义和数据如下
1 | create table student( |
内连接
内连接就是讲俩个表中都存在的数据显示来,下面俩个sql语句的作用是一样的:
1 | select * from course inner join student on course.stuid=student.id; |
外连接
左连接
是以左表为基准,将a.stuid = b.stuid的数据进行连接,然后将左表没有的对应项显示,右表的列为NULL
1 | select *from course as a left join student as b on a.stuid=b.id; |
右连接
是以右表为基准,将a.stuid = b.stuid的数据进行连接,然以将右表没有的对应项显示,左表的列为NULL
1 | select *from course as a right join student as b on a.stuid=b.id; |
全连接
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
相当于一个笛卡尔乘积。在mysql中是不支持的。
补充
自然连接
自然连接(Natural join)是一种特殊的等值连接,要求两个关系表中进行比较的属性组必须是名称相同的属性组,并且在结果中把重复的属性列去掉(即:留下名称相同的属性组中的其中一组)。