SQL中的左连接和右连接

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. 查询出来的数据行数为:左查看左表,右查看右表。也就是左连接查询的时候,查出来的数据条数是左表的长度。同理右查询时,插出来的数据条数和右表的条数一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值