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 MVCC机制原理详解
Apr 20 MySQL
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
May 29 MySQL
MySQL 1130异常,无法远程登录解决方案详解
Aug 23 MySQL
mysql配置SSL证书登录的实现
Sep 04 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
分享MySQL常用 内核 Debug 几种常见方法
Mar 17 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 MySQL
mysql查询结果实现多列拼接查询
Apr 03 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 23 MySQL
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
解决mysql的int型主键自增问题
QT连接MYSQL数据库的详细步骤
Jul 07 #MySQL
mysql备份策略的实现(全量备份+增量备份)
You might like
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
react-router中的属性详解
2017/06/01 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
python错误处理详解
2014/09/28 Python
python中sleep函数用法实例分析
2015/04/29 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
计算机应用毕业生自荐信
2013/10/23 职场文书
2014年校长工作总结
2014/12/11 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
Java无向树分析 实现最小高度树
2022/04/09 Javascript