MySQL 四种连接和多表查询详解


Posted in MySQL onJuly 16, 2021

MySQL 内连接、左连接、右连接、外连接、多表查询

构建环境:

create table t_emp(
	id int primary key, 
	name varchar(20),
	deptId int
);
create table t_dept(
	id int primary key,
	name varchar(20)
);
insert into t_dept(id, name) values(1, '设计部');
insert into t_dept(id, name) values(2, '开发部');
insert into t_dept(id, name) values(3, '测试部');
insert into t_emp(id, name, deptId) values(1, '张三', 1);
insert into t_emp(id, name, deptId) values(2, '李四', 2);
insert into t_emp(id, name, deptId) values(3, '王五', 0);
# ps:为了说明方便,t_emp 表 说成 A 表, t_dept 表说成 B 表

目录

一、INNER JION 内连接 ( A ∩ B )

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e INNER JOIN t_dept d ON  e.deptId = d.id;

MySQL 四种连接和多表查询详解

二、LEFT JOIN 左外连接( A 全有 )

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e LEFT JOIN t_dept d ON e.deptId = d.id;

MySQL 四种连接和多表查询详解

三、RIGHT JOIN 右外连接 (B 全有)

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e RIGHT JOIN t_dept d ON e.deptId = d.id;

MySQL 四种连接和多表查询详解

四、FULL JOIN 全外连接( A + B)

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e LEFT JOIN t_dept d 
ON e.deptId = d.id UNION 
SELECT * FROM t_emp e RIGHT JOIN t_dept d ON e.deptId = d.id;

MySQL 四种连接和多表查询详解

五、LEFT Excluding JOIN ( A - B 即 A 表独有)+

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e LEFT JOIN t_dept d ON e.deptId= d.id WHERE d.id is null;

MySQL 四种连接和多表查询详解

六、RIGHT Excluding JOIN ( B - A 即 B表独有)

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e RIGHT JOIN t_dept d ON e.deptId= d.id WHERE e.id is null;

MySQL 四种连接和多表查询详解

七、OUTER Excluding JOIN (A 与 B 各自独有)

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e LEFT JOIN t_dept d ON e.deptId= d.id WHERE d.id is null
UNION
SELECT * FROM t_emp e RIGHT JOIN t_dept d ON e.deptId= d.id WHERE e.id is null;

MySQL 四种连接和多表查询详解

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!

MySQL 相关文章推荐
Mysql MVCC机制原理详解
Apr 20 MySQL
MySQL Shell的介绍以及安装
Apr 24 MySQL
mysql在项目中怎么选事务隔离级别
May 25 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
解决Mysql多行子查询的使用及空值问题
Jan 22 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
MySQL RC事务隔离的实现
Mar 31 MySQL
单机多实例部署 MySQL8.0.20
May 15 MySQL
MySQL普通表如何转换成分区表
May 30 MySQL
mysql幻读详解实例以及解决办法
Jun 16 MySQL
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
解决mysql的int型主键自增问题
QT连接MYSQL数据库的详细步骤
Jul 07 #MySQL
mysql备份策略的实现(全量备份+增量备份)
You might like
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
js更优雅的兼容
2010/08/12 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
python写的一个squid访问日志分析的小程序
2014/09/17 Python
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
python求质数的3种方法
2018/09/28 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
环境工程大学生个人的自我评价
2013/10/08 职场文书
高二地理教学反思
2014/01/24 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
检讨书模板
2015/01/29 职场文书
自荐信怎么写
2015/03/04 职场文书
外贸英文求职信范文
2015/03/19 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL
GO中sync包自由控制并发示例详解
2022/08/05 Golang