sql 连接 【vaynexiao】

Book表
在这里插入图片描述
Stu表
在这里插入图片描述
内连接inner join
–只返回左表和右表同时满足条件的记录,
select * from book as a,stu as b where a.sutid = b.stuid

select * from book as a inner join stu as b on a.stuid = b.stuid【注意:此时为select *,两表的所有字段全部会显示】
在这里插入图片描述

外连接left [outer] join on / right [outer] join on/ full [outer] join on
select * from book as a left join stu as b on a.sutid = b.stuid
–返回左表和右表同时满足条件的记录+左表剩余的记录

在这里插入图片描述
select * from book as a right join stu as b on a.sutid = b.stuid
–返回左表和右表同时满足条件的记录+右表剩余的记录

在这里插入图片描述
值得注意的是:当左右连接时,非基表没有关联记录时,仍会返回基表所有记录,因为外连接的意思是“返回基表和次表同时满足条件的记录+基表剩余的记录”
select * from book as a full outer join stu as b on a.sutid = b.stuid
–返回左表和右表同时满足条件的记录+两个表剩余的记录(默认null补足数据)

在这里插入图片描述
交叉连接cross join (又称笛卡尔积,没有where语句)
–它返回连接表中所有数据行的笛卡尔积 ,即左表的每一条数据*右表每一条记录

在这里插入图片描述
在这里插入图片描述
select * from book
select * from stu
select * from book as a inner join stu as b on a.stuid = b.stuid
select * from book as a left join stu as b on a.stuid = b.stuid
对应下方结果

在这里插入图片描述
右连接同理,但有个值得注意的地方。
左连接是以左表为基表,即用左表的第一条数据去找对应的右表的所有数据,找完了接着用第二条开始找。
右连接同理,可看下图。
在这里插入图片描述

发布了75 篇原创文章 · 获赞 106 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/vayne_xiao/article/details/105321087