SQL中的左连接和右连接

SQL中的左连接和右连接

为什么面试官喜欢问这个问题?为什么自己明明会SQL但是这个问题却模棱两可?今天为大家解决这个问题。话不多说,直接上案例~

创建两张表

首先创建第一张表class,字段如下图所示。
class表
往表中添加以下字段:
在这里插入图片描述
然后创建第二张表,名字是student表,字段如下所示:
在这里插入图片描述
注意:不要给student表添加外键,否则在student表添加内容的时候,classid无法自定义内容,导致结果无法很好进行对比。
往student表中添加以下内容:
在这里插入图片描述

左连接

把join关键字左边的表叫做左表,右边的表叫做右表。

select * from student st left join class c on st.classid=c.classid;

在上面的查询语句中,student是左表,class是右表。根据左连接所以会把左表student里面的内容全部查询出来,然后右表中的内容会根据on后面的条件进行查询,在左边中有的就进行显示,没有的数据就为null。详情请见下图。
在这里插入图片描述

右连接

select * from student st right join class c on st.classid=c.classid;

在上面的查询语句中,student是左表,class是右表。根据右连接所以会把右表class里面的内容全部查询出来,然后左表中的内容会根据on后面的条件进行查询,条件满足就进行显示,没有的数据就为null。详情请见下图。

在这里插入图片描述

注意

  1. 不管是左连接还是右连接,查询全部时,结果会显示两个表全部的字段。相同字段会编译器会自动添加内容进行区分。
  2. 查询出来的表格,会先显示form后面的表格字段,然后是join里面后面表的字段。
  3. 查询出来的数据行数为:左查看左表,右查看右表。也就是左连接查询的时候,查出来的数据条数是左表的长度。同理右查询时,插出来的数据条数和右表的条数一致。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐