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知识点整理
Apr 05 MySQL
Mysql 设置boolean类型的操作
Jun 04 MySQL
mysql left join快速转inner join的过程
Jun 30 MySQL
MySQL系列之十 MySQL事务隔离实现并发控制
Jul 02 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
mysql中int(3)和int(10)的数值范围是否相同
Oct 16 MySQL
一文了解MySQL二级索引的查询过程
Feb 24 MySQL
MySQL学习之基础命令实操总结
Mar 19 MySQL
详细介绍MySQL中limit和offset的用法
May 06 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 MySQL
MySQL数据库如何查看表占用空间大小
Jun 10 MySQL
MySQL transaction事务安全示例讲解
Jun 21 MySQL
MySQL中的引号和反引号的区别与用法详解
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 #MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
mysql中int(3)和int(10)的数值范围是否相同
深入解析MySQL索引数据结构
MySQL数据库必备之条件查询语句
Oct 15 #MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
You might like
PHP:风雨欲来 路在何方?
2006/10/09 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
Python多线程实例教程
2014/09/06 Python
Python爬取三国演义的实现方法
2016/09/12 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
Python中的__slots__示例详解
2017/07/06 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
一行python实现树形结构的方法
2019/08/09 Python
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
鼓舞士气的口号
2014/06/16 职场文书
九一八事变演讲稿
2014/09/05 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js