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 ...
随机推荐
- IIS 配置 FTP 网站
在 服务器管理器 的 Web服务器IIS 上安装 FTP 服务 在 IIS管理器 添加FTP网站 配置防火墙规则 说明:服务器环境是Windows Server 2008 R2,IIS7.5. 1. ...
- Python内置函数(26)——enumerate
英文文档: enumerate(iterable, start=0) Return an enumerate object. iterable must be a sequence, an itera ...
- python多进程--------linux系统中python的os.fork()方法
linux下python 创建子进程的原理: os.fork()方法 的原理 为了实现并发.多任务,我们可以在主程序种开启一个进程或者线程.在类unix操作系统当中(非windows),可以用pyth ...
- java Hibernate 处理 oracle xmltype类型
网上关于如何处理oracle xmltype类型的博客很多,我现在分享的是针对具体业务来的,我在oracle数据库entity表中detail插入了一条xmltype类型的数据 xml的详细内容如下: ...
- 07、NetCore2.0依赖注入(DI)之生命周期
07.NetCore2.0依赖注入(DI)之生命周期 NetCore2.0依赖注入框架(DI)是如何管理注入对象的生命周期的?生命周期有哪几类,又是在哪些场景下应用的呢? -------------- ...
- Iframe父页面与子页面之间的相互调用
iframe元素就是文档中的文档. window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象.但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者i ...
- STL迭代器------Traits编程技法详细理解(一)
最近在看STL源码解析的迭代器(iterators)一章,涉及到c++ Traits的编程技法,刚开始看时一头雾水,反复看了好几遍之后才理解这个东西,因此来写写在这方面的理解,如有错误,希望读者指正. ...
- drupal8之分类
示例: 我的相册 一.创建分类 1.创建一个相册 点击[结构]>[Taxonomy]>[+add vocabulary] 点击[保存] 2.创建相册的分类 点击[+add term] 点击 ...
- SpringIOC学习一
Spring是一个轻量级的控制反转(IOC)和面向切面(IOP)的容器框架1.控制反转IOC(inversion of controller) IOC是一种概念,是把我们程序中类与类之间的依赖关 ...
- phpcmsV9.5.8 后台拿shell
参考url:https://xianzhi.aliyun.com/forum/read/1507.html poc:index.php??m=content&c=content&a=p ...