数据库之左连接、右连接、内连接和全连接的区别

相关借鉴1
相关借鉴2
之前自己一直做的Unity前端的部分,很少做后台的开发。由于今年大佬都不在了,只能自己一个人进行后台的开发,在这里记一下数据库多表联查相关的知识:
基本定义:
  left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
  right join(右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
  inner join(等值连接或者叫内连接):只返回两个表中连接字段相等的行。
  full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。
表测试数据:
students表:
students表数据
colleges表:
colleges表数据

一、内连接

关键字:inner join on
语句:SELECT * FROM students a INNER JOIN colleges b ON a.`college`=b.`name`;
执行结果:
内连接结果截图
说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
结构示意图

二、左连接

关键字:left join on / left outer join on
语句:SELECT * FROM students a LEFT JOIN colleges b ON a.college=b.name;
执行结果:
左连接截图
说明:
left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。
左(外)连接,左表(students)的记录将会全部表示出来,而右表(colleges)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
左连接示意图

三、右连接(右外连接)

关键字:right join on / right outer join on
语句:SELECT * FROM students a RIGHT JOIN colleges b ON a.college=b.`name`;
执行结果:
右连接截图
说明:
right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。
与左(外)连接相反,右(外)连接,左表(students)只会显示符合搜索条件的记录,而右表(colleges)的记录将会全部表示出来。左表记录不足的地方均为NULL。

四、全连接(全外连接)

格式:select a.name,b.job from A a full join B b on a.id=b.A_id
MySQL目前不支持此种方式,可以用其他方式替代解决。

五、三张表关联查询:

格式如下:
方法一:

select * from table1 a,table2 b,table3 c where a.sems_role_rid=b.rid and a.udeptid=c.deptid 

方法二:(这种方法并不局限于左连接,可以灵活运用)

select *  from table1 a left join table2 b on  a.sems_role_rid=b.rid left join table3 c on a.udeptid=c.deptid 
发布了12 篇原创文章 · 获赞 18 · 访问量 560

猜你喜欢

转载自blog.csdn.net/weixin_42132959/article/details/103814608
今日推荐