MYSQL关联查询(内连接、外连接)

导读:本篇文章讲解 MYSQL关联查询(内连接、外连接),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

前言:

文中以两个表简单为例,讲述内外连接的含义,两个表的建表语句,及数据为:

CREATE TABLE `a_table` (
  `a_id` int(11) DEFAULT NULL,
  `a_name` varchar(10) DEFAULT NULL,
  `a_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert  into `a_table`(`a_id`,`a_name`,`a_part`) values (19001,'小红','总裁办'),(19002,'小明','研发一部'),(19003,'小张','研发二部'),(19004,'小美','秘书处'),(19005,'小黄','办公室');

CREATE TABLE `b_table` (
  `b_id` int(11) DEFAULT NULL,
  `b_salary` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert  into `b_table`(`b_id`,`b_salary`) values (19001,'20000'),(19002,'10000'),(19004,'15000'),(19009,'8000');

如下:
表a,存储人员部门编号信息;
在这里插入图片描述
表b存储人员薪资;
在这里插入图片描述

一、内连接:

关键字:inner join
含义:将一个表中的行与其他表中的行根据条件进行匹配,并允许从两个表中查询包含列的行记录
范围:只连接匹配的行
场景:
从表中可以看到,表b_table中并没与完全存储表a_table所有人员的薪资,如果想要查询,所有可以查询到薪资的人员薪资情况,这是我们可以使用内连接查询。
所有查询的结果都能够在连接的表中有记录。

以id匹配,返回两个表中id相同的行,拼接结果返回。
根据结果返回,查询结果根据Id匹配a_table和b_table,只返回匹配的行。

SELECT * FROM a_table a INNER JOIN b_table b ON a.a_id = b.b_id 

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

二、左外链接:

关键字:left join on / left outer join on
含义: 以左边的表为基准,去匹配右边的表的数据,匹配不到的显示为null
范围: 包含左边全部的行
场景:
我们需要查询所有人员的薪资范围,薪资表中没有人员薪资记录的返回null。

SELECT * FROM a_table a LEFT JOIN b_table b ON a.a_id = b.b_id

结果:
根据结果可以看到,本次查询以a_table 为基准,根据id去匹配b_table中的数据,匹配不到的返回null。
在这里插入图片描述

三、右外连接:

关键字:right join on / right outer join on
含义:以右边的表的数据为基准,去匹配左边所有的行
范围:包含右边所有的行
场景:
我们想要根据薪资表尽可能全的了解员工工资情况,所以以薪资表为基准,查询薪资表记录的所有人员的薪资情况,查询不到的人员为null。

SELECT * FROM a_table a RIGHT JOIN b_table b ON a.a_id = b.b_id 

结果:
根据结果可以看到,本次查询以b_table为基准,根据id去匹配a_table中的数据,匹配不到的返回null。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/10347.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!