Mysql--七种 Join 查询
===============
1 准备数据
1.1 建立 Employee 表
DROP TABLE IF EXISTS employee;
CREATE TABLE IF NOT EXISTS employee(
id INT PRIMARY KEY auto_increment,
name VARCHAR(40),
dept_id INT
);
INSERT INTO employee(name, dept_id) VALUES('Alice', 1);
INSERT INTO employee(name, dept_id) VALUES('BOb', 2);
INSERT INTO employee(name, dept_id) VALUES('Chris', 3333);
INSERT INTO employee(name, dept_id) VALUES('David', 4444);
1.2 建立 Department 表
DROP TABLE IF EXISTS department;
CREATE TABLE IF NOT EXISTS department(
id INT PRIMARY KEY auto_increment,
name VARCHAR(40)
);
INSERT INTO department(name) VALUES('RD');
INSERT INTO department(name) VALUES('HR');
INSERT INTO department(name) VALUES('test01');
INSERT INTO department(name) VALUES('test02');
2 再回顾一下数据
2.1 Employee表
SELECT * FROM employee;

2.2 Department表
SELECT * FROM department;

3 测试
3.1 AB共有
图示说明:

Sql查询:
SELECT * FROM employee e INNER JOIN department d WHERE e.dept_id = d.id;
结果:

3.2 左外连接
图示说明:

Sql查询:
SELECT * FROM employee e LEFT JOIN department d ON e.dept_id = d.id;
结果:

左外连接:左边一定有,如果右边没有则为Null
3.3 右外连接
图示说明:

Sql查询:
SELECT * FROM employee e RIGHT JOIN department d ON e.dept_id = d.id;
结果:

右外连接:右边一定有,如果左边没有则为Null
3.4 A独有
图示说明:

Sql查询:
SELECT * FROM employee e LEFT JOIN department d ON e.dept_id = d.id WHERE d.id IS NULL;
结果:

左边独有,说明右边为空,于是对右边加上 IS NULL 的条件即可
3.5 B独有
图示说明:

Sql查询:
SELECT * FROM employee e RIGHT JOIN department d ON e.dept_id = d.id WHERE e.id IS NULL;
结果:

右边独有,说明左边为空,于是对左边加上 IS NULL 的条件即可
3.6 AB并集
图示说明:

Sql查询:
SELECT * FROM employee e LEFT JOIN department d ON e.dept_id = d.id
UNION
SELECT * FROM employee e RIGHT JOIN department d ON e.dept_id = d.id;
结果:

其实就是 3.2(左外连接) 与 3.3(右外连接) 两者的并集
3.7 AB分别独有的并集
图示说明:

Sql查询:
SELECT * FROM employee e LEFT JOIN department d ON e.dept_id = d.id WHERE d.id IS NULL
UNION
SELECT * FROM employee e RIGHT JOIN department d ON e.dept_id = d.id WHERE e.id IS NULL;
结果:

其实就是 3.4(A独有) 与 3.5(B独有) 两者的并集
======下一篇======
Mysql--七种 Join 查询的更多相关文章
- Mysql七种 JOIN 连接
内连接 SELECT <select_list> FROM TableA A INNER JOIN TableB B ON A.Key = B.Key 左外连接 SELECT <se ...
- MySQL七种join理论
1. 内连接 select * from A inner join B where A.key=B.key; 2. 左连接 select * from A left join B on A.key=B ...
- MySQL逻辑架构、SQL加载执行顺序、七种JOIN模式图解
逻辑架构 存储引擎 查看当前安装的mysql提供的存储引擎 查看当前mysql默认的存储引擎 MyISAM和InnoDB SQL加载执行顺序 sql书写顺序 mysql解析器执行的顺序 考点:m ...
- 【知识库】-数据库_MySQL 的七种 join
掘金作者:haifeisi 文章出处: MySQL 的七种 join Learn [已经过测试校验] 一.内连接 二.左外连接 三.右外连接 四.左连接 五.右连接 六.全连接 七.两张表中都没有出现 ...
- MySQL的七种join
转载 原文地址 建表 在这里我们先建立两张有外键关联的两张表: CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept` ...
- MySQL 的七种 join
建表 在这里呢我们先来建立两张有外键关联的张表. CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` ...
- MYSQL 的七种join
建表 在这里呢我们先来建立两张有外键关联的张表. CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` ...
- 七种join的书写规范
在mysql中的两表进行连接时,总共有7种连接情况,具体可见下图 由图的从左到右的顺序 图1.左连接(left join):返回左表中的所有记录和右表中的连接字符字段相等的记录,若右表没有匹配值则补N ...
- MySQL 三种关联查询的方式: ON vs USING vs 传统风格
看看下面三个关联查询的 SQL 语句有何区别? 1SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id) 2 ...
随机推荐
- 第一次制作和使用图标字体-IcoMoon
开题:之前就有所耳闻,最近两天第一次运用到图标字体.刚开始嘛,一脸懵逼的状态.成功运用之后就来记录一下使用过程咯! 1. 打开在线生成工具:https://icomoon.io/app/#/selec ...
- Mego(05) - 创建模型
Mego框架使用一组约定来基于CLR类来构建模型.您可以指定其他配置来补充和/或覆盖通过约定发现的内容. 这里需要强调的我们EF不同的是框架只支持数据注释的语法来构建模型,后期只有通过其他接口才能更改 ...
- istio入门(02)istio的架构和概念
Istio从逻辑上可以分为数据平面和控制平面: 数据平面主要由一系列的智能代理(Envoy)组成,管理微服务之间的网络通信 控制平面负责管理和配置这些智能代理,并动态执行策略 主要由以下组件构成 En ...
- angular2 学习笔记 ( animation 动画 )
refer : https://angular.io/guide/animations https://github.com/angular/angular/blob/master/packages/ ...
- 新概念英语(1-123)A trip to Australia
Who is the man with the beard?(胡须)A:Look, Scott. This is a photograph I took during my trip to Austr ...
- ELK学习总结(4-1)elasticsearch更改mapping(不停服务重建索引)
elasticsearch更改mapping(不停服务重建索引)原文 http://donlianli.iteye.com/blog/1924721Elasticsearch的mapping一旦创建, ...
- CentOS7配置php7.0支持redis
配置之前应该是环境已经搭好了,phpinfo的页面可以加载出来. 使用git clone下载git上的phpredis扩展包 [root@VM_103_117_centos ]#git clone ...
- [翻译] softmax和softmax_cross_entropy_with_logits的区别
翻译自:https://stackoverflow.com/questions/34240703/whats-the-difference-between-softmax-and-softmax-cr ...
- 第一章 搭建一个通用的.net core项目框架
项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...
- [LeetCode] Set Mismatch 设置不匹配
The set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of ...