MySQL七种JOIN类型小结


Posted in MySQL onOctober 24, 2021

        在开始之前,我们创建两个表用于演示将要介绍的其中JOIN类型。

建表

CREATE TABLE `tbl_dept` (
   `id` INT(11) NOT NULL AUTO_INCREMENT,
   `deptName` VARCHAR(30) DEFAULT NULL,
   `locAdd` VARCHAR(40) DEFAULT NULL,
   PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE `tbl_emp` (
   `id` INT(11) NOT NULL AUTO_INCREMENT,
   `name` VARCHAR(20) DEFAULT NULL,
   `deptId` VARCHAR(11) NOT NULL,
   PRIMARY KEY (`id`),
   KEY `fk_dept_id` (`deptId`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

初始化数据

MySQL七种JOIN类型小结MySQL七种JOIN类型小结

七种JOIN

1. A ∩ B

MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 INNER JOIN TableB B # 共有
 ON A.Key = B.Key

MySQL七种JOIN类型小结

2. A ( = A ∩ B + A* )

MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 LEFT JOIN TableB B
 ON A.Key = B.Key

MySQL七种JOIN类型小结

3. B ( = A ∩ B + B* )

MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 RIGHT JOIN TableB B
 ON A.Key = B.Key

MySQL七种JOIN类型小结 

4. A* ( = A - A ∩ B )

 MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 LEFT JOIN TableB B
 ON A.Key = B.Key # ON时主表保留
 WHERE B.Key IS NULL # 筛选A表数据

MySQL七种JOIN类型小结

5. B* ( = B - A ∩ B )

MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 RIGHT JOIN TableB B
 ON A.Key = B.Key
 WHERE A.Key IS NULL

MySQL七种JOIN类型小结

6. A ∪ B

 MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 FULL OUTER JOIN TableB B ## FULL OUTER 仅oracle支持
 ON A.Key = B.Key

 MySQL七种JOIN类型小结

7. A ∪ B - A ∩ B

MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 FULL OUTER JOIN TableB B
 ON A.Key = B.Key
 WHERE A.Key IS NULL OR B.Key IS NULL

MySQL七种JOIN类型小结

到此这篇关于MySQL七种JOIN类型详解的文章就介绍到这了,更多相关mysql join类型内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
详解MySQL数据库千万级数据查询和存储
May 18 MySQL
MySQL时间盲注的五种延时方法实现
May 18 MySQL
详解mysql三值逻辑与NULL
May 19 MySQL
详解MySQL中的主键与事务
May 27 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
MySql 8.0及对应驱动包匹配的注意点说明
Jun 23 MySQL
SQL之各种join小结详细讲解
Aug 04 MySQL
mysql中如何用命令创建联合唯一索引
Apr 20 MySQL
Mysql 文件配置解析介绍
May 06 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 MySQL
mysql查看表结构的三种方法总结
Jul 07 MySQL
MySQL中的引号和反引号的区别与用法详解
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 #MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
mysql中int(3)和int(10)的数值范围是否相同
深入解析MySQL索引数据结构
MySQL数据库必备之条件查询语句
Oct 15 #MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
You might like
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
ECMAScript6--解构
2017/03/30 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
Python递归函数定义与用法示例
2017/06/02 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
pycharm创建一个python包方法图解
2019/04/10 Python
pandas 对group进行聚合的例子
2019/12/27 Python
Python列表解析操作实例总结
2020/02/26 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
.net软件工程师面试题
2015/03/31 面试题
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
冰淇淋开店创业计划书
2014/02/01 职场文书
十八大标语口号
2014/10/09 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
试了下Golang实现try catch的方法
2021/07/01 Golang
Python中的 No Module named ***问题及解决
2022/07/23 Python