(包会)SQL中内、左、右连接超详细讲解
开始测试
1.测试 inner join
测试表: person(表1) technology(表2)
语法: select 字段名 from 表1 别名1 inner join 表2 别名2 on 别名1(表1).字段名=别名2(表2).字段名
拆解: 语法 on 后跟的是表1和表2相匹配的条件
-- 实例代码:
select * from person p inner join technology t on p.pid=t.tid;
![在这里插入图片描述](https://img-blog.csdnimg.cn/df3df43f044544d6b9647e9577e8da4b.png#pic_center
2.测试 left join
测试表: person(表1) technology(表2)
语法: select 字段名 from 表1 别名1 inner join 表2 别名2 on 别名1(表1).字段名=别名2(表2).字段名
拆解: 语法 on 后跟的是表1和表2相匹配的条件,left join连接后,左表会有全部的数据,右表若是与左表匹配不上,则会用NULL填补
-- 实例代码:
select * from person p left join technology t on p.pid=t.tid
3.测试right join
测试表: person(表1) technology(表2)
语法: select 字段名 from 表1 别名1 inner join 表2 别名2 on 别名1(表1).字段名=别名2(表2).字段名
拆解: 语法 on 后跟的是表1和表2相匹配的条件,right join连接后,右表会有全部的数据,左表若是与左表匹配不上,则会用NULL填补
实例代码:select * from person p right join technology t on p.pid=t.tid
在这里插入图片描述
4.多张表进行inner JOIN连接测试
-- 代码实现
select *
from person p inner join technology t on p.pid=t.tid
-- 先将p表与t表进行内连接。
inner join win w on t.tid=w.wid
-- 此时与w表进行内连接的是经过第一次内连接后的表。所以即使t表中含有3,win表中中含有3,最终得到的结果也是没有3这一列
5.多张表进行左连接
select *
from person p
left join technology t on p.pid=t.tid
-- p表先于t表进行左连接
left join win w on t.tid=w.wid
-- 第一次左连接后的结果再与w表进行一次左连接
-- 注意:最后的查询结果的行数由最后一次的左连接的行数来决定
6.多张表进行右连接
select * from person p
right join technology t on p.pid=t.tid
-- p表先与t表做右连接
right join win w on w.wid=t.tid
-- 第一次右连接后的w表结果再与w表进行右连接。
-- 注意:表有几行,取决于最后一个右连接。因为右连接是右表全部都保留,若是超出右表的范围,则不会显示出来
t.tid
– 第一次右连接后的w表结果再与w表进行右连接。
– 注意:表有几行,取决于最后一个右连接。因为右连接是右表全部都保留,若是超出右表的范围,则不会显示出来
![在这里插入图片描述](https://img-blog.csdnimg.cn/794886023e6347999ffff387b8192592.png#pic_center)