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查询学习之基础查询操作
May 08 MySQL
.Net Core导入千万级数据至Mysql的步骤
May 24 MySQL
浅谈MySQL next-key lock 加锁范围
Jun 07 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
Mysql中一千万条数据怎么快速查询
Dec 06 MySQL
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 MySQL
一次SQL如何查重及去重的实战记录
Mar 13 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 MySQL
MySQL 原理与优化之原数据锁的应用
Aug 14 MySQL
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
解决mysql的int型主键自增问题
QT连接MYSQL数据库的详细步骤
Jul 07 #MySQL
mysql备份策略的实现(全量备份+增量备份)
You might like
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
jstree的简单实例
2016/12/01 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
Python 面向对象部分知识点小结
2020/03/09 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
工作自荐信
2013/12/11 职场文书
银行存款证明样本
2014/01/17 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
小学领导班子对照材料
2014/08/23 职场文书
2015年测量员工作总结
2015/05/23 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
导游词之山西关帝庙
2019/11/01 职场文书