Sql多表连接

内连接、外连接、交叉连接

数据表:
在这里插入图片描述stu表在这里插入图片描述result表

1.内连接 join 或者inner join

与select a.* , b.* from 表a, 表b where a.id = b.id 等效,也是内连接(推荐使用join)

select * from stu as a,result as b where a.stuid=b.stuid
select * from stu as a [inner] join result as b on a.stuid=b.stuid

内连接可以使用上面两种方式,其中第二种方式的inner可以省略
作用:内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值
查询结果:

在这里插入图片描述

2.外连接

1.左连接:left join 或者 left outer join

是以左表为基准,将a.stuid = b.stuid的数据进行连接,然后将左表没有的对应项显示,右表的列为NULL

select * from stu as a left join result as b on a.stuid = b.stuid

查询结果:
在这里插入图片描述

2.右连接:right join 或者 right outer join

是以右表为基准,将a.stuid = b.stuid的数据进行连接,然以将右表没有的对应项显示,左表的列为NULL

select * from stu as a right join result as b on a.stuid = b.stuid

查询结果:
在这里插入图片描述

3.全然外连接:full join 或者full outer join

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

select * from stu as a full join result as b on a.stuid=b.stuid

3.交叉连接 cross join

没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积,交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合,交叉连接也称作笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小

select * from stu as a cross join result order by a.stuid

查询结果:
在这里插入图片描述
如果加了条件,将返回符合条件的结果集,结果和inner join所看到的运行结果一样

select * from stu as a cross join result as b on a.stuid=b.stuid

查询结果:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值