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 INSERT INTO语句
May 26 MySQL
MySQL中的布尔值,怎么存储false或true
Jun 04 MySQL
MySQL 时间类型的选择
Jun 05 MySQL
MySQL 外键约束和表关系相关总结
Jun 20 MySQL
MYSQL 的10大经典优化案例场景实战
Sep 14 MySQL
SQL注入详解及防范方法
Dec 06 MySQL
mysql分组后合并显示一个字段的多条数据方式
Jan 22 MySQL
SQL注入篇学习之盲注/宽字节注入
Mar 03 MySQL
面试提问mysql一张表到底能存多少数据
Mar 13 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
MySQL生成千万测试数据以及遇到的问题
Aug 05 MySQL
MySQL中的引号和反引号的区别与用法详解
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 #MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
mysql中int(3)和int(10)的数值范围是否相同
深入解析MySQL索引数据结构
MySQL数据库必备之条件查询语句
Oct 15 #MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
You might like
关于svn冲突的解决方法
2013/06/21 PHP
php ci框架验证码实例分析
2013/06/26 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
PHP实现数据分页显示的简单实例
2016/05/26 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
vue小白入门教程
2018/04/02 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
python实现杨氏矩阵查找
2019/03/02 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
python中的测试框架
2020/11/13 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
啤酒销售实习自我鉴定
2013/09/24 职场文书
八一慰问活动方案
2014/02/07 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers