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 12 MySQL
记一次Mysql不走日期字段索引的原因小结
Oct 24 MySQL
mysql sum(if())和count(if())的用法说明
Jan 18 MySQL
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
Jan 22 MySQL
MySQL 开窗函数
Feb 15 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
SQL注入篇学习之盲注/宽字节注入
Mar 03 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
MySQL 逻辑备份 into outfile
May 15 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
MySql统计函数COUNT的具体使用详解
Aug 14 MySQL
MySQL下载安装配置详细教程 附下载资源
Sep 23 MySQL
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
解决mysql的int型主键自增问题
QT连接MYSQL数据库的详细步骤
Jul 07 #MySQL
mysql备份策略的实现(全量备份+增量备份)
You might like
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
微信JS接口大全
2016/08/25 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
Python列表生成器的循环技巧分享
2015/03/06 Python
详解Python3的TFTP文件传输
2018/06/26 Python
python读取和保存图片5种方法对比
2018/09/12 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
django实现模型字段动态choice的操作
2020/04/01 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
少先队学雷锋活动月总结
2014/03/09 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
借名购房协议书范本
2014/10/06 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
如何优化vue打包文件过大
2022/04/13 Vue.js