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基础(二)
Apr 05 MySQL
mysql多表查询-笔记七
Apr 05 MySQL
MySQL获取所有分类的前N条记录
May 07 MySQL
详解MySQL中的主键与事务
May 27 MySQL
Mysql 如何查询时间段交集
Jun 08 MySQL
mysql 如何获取两个集合的交集/差集/并集
Jun 08 MySQL
Mysql数据库值的添加、修改、删除及清空操作实例
Jun 20 MySQL
mysql如何配置白名单访问
Jun 30 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
Apr 12 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
May 30 MySQL
Mysql将字符串按照指定字符分割的正确方法
May 30 MySQL
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
解决mysql的int型主键自增问题
QT连接MYSQL数据库的详细步骤
Jul 07 #MySQL
mysql备份策略的实现(全量备份+增量备份)
You might like
PHP删除数组中空值的方法介绍
2014/04/14 PHP
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
用python删除java文件头上版权信息的方法
2014/07/31 Python
Python读取网页内容的方法
2015/07/30 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
python学习教程之使用py2exe打包
2017/09/24 Python
python将回车作为输入内容的实例
2018/06/23 Python
Python实现图片识别加翻译功能
2019/12/26 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
什么是URL
2015/12/13 面试题
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
公司企业表扬信
2014/01/11 职场文书
2014年计算机专业个人自我评价
2014/01/19 职场文书
十一酒店活动方案
2014/02/20 职场文书
售后客服工作职责
2014/06/16 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
环保建议书范文
2015/09/14 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android
Hive日期格式转换方法总结
2022/06/25 数据库