Mysql 系列文章主页

===============

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--存储引擎(MyISam & InnoDB)

Mysql--七种 Join 查询的更多相关文章

  1. Mysql七种 JOIN 连接

    内连接 SELECT <select_list> FROM TableA A INNER JOIN TableB B ON A.Key = B.Key 左外连接 SELECT <se ...

  2. 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 ...

  3. MySQL逻辑架构、SQL加载执行顺序、七种JOIN模式图解

    逻辑架构   存储引擎 查看当前安装的mysql提供的存储引擎 查看当前mysql默认的存储引擎 MyISAM和InnoDB SQL加载执行顺序 sql书写顺序 mysql解析器执行的顺序  考点:m ...

  4. 【知识库】-数据库_MySQL 的七种 join

    掘金作者:haifeisi 文章出处: MySQL 的七种 join Learn [已经过测试校验] 一.内连接 二.左外连接 三.右外连接 四.左连接 五.右连接 六.全连接 七.两张表中都没有出现 ...

  5. MySQL的七种join

    转载 原文地址 建表 在这里我们先建立两张有外键关联的两张表: CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept` ...

  6. MySQL 的七种 join

    建表 在这里呢我们先来建立两张有外键关联的张表. CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` ...

  7. MYSQL 的七种join

    建表 在这里呢我们先来建立两张有外键关联的张表. CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` ...

  8. 七种join的书写规范

    在mysql中的两表进行连接时,总共有7种连接情况,具体可见下图 由图的从左到右的顺序 图1.左连接(left join):返回左表中的所有记录和右表中的连接字符字段相等的记录,若右表没有匹配值则补N ...

  9. MySQL 三种关联查询的方式: ON vs USING vs 传统风格

    看看下面三个关联查询的 SQL 语句有何区别? 1SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id) 2 ...

随机推荐

  1. MySQL binlog 日志

    一:MySQL 日志的三种类型: statement.row.mix 格式.推荐使用row格式. 怎么设置自己的日志格式呢? 1. set globle binlog_format='MIXED' 2 ...

  2. ASP.NET Web API编程——模型验证与绑定

    1.模型验证 使用特性约束模型属性 可以使用System.ComponentModel.DataAnnotations提供的特性来限制模型. 例如,Required特性表示字段值不能为空,Range特 ...

  3. tomcat 修改默认字符集

    找到connector节点,插入 disableUploadTimeout="true" useBodyEncodingForURI="true" URIEnc ...

  4. mqtt paho ssl java端代码

    参考链接:http://blog.csdn.net/lingshi210/article/details/52439050 mqtt 的ssl配置可以参阅 http://houjixin.blog.1 ...

  5. angular2 学习笔记 の 移动端开发 ( 手势 )

    更新 : 2018-01-31 (hammer 的坑) hammer 的 pinch 在某种情况下会自动触发 panEnd,很奇葩. 解决方法就是记入时间呗 refer : https://githu ...

  6. 对于错误“Refused to execute script from '...' because its MIME type ('') is not executable, and strict MIME type checking is enabled.”的处理。

    今天在是用公司的报表插件Stimulsoft时发现的问题.之前可以正常使用,突然不能加载了.查看发现得到这个错误. 查看请求头 可以看到,请求正常响应,但是发现 Content-Type是空的,但是引 ...

  7. hdu1072 Nightmare---BFS

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1072 题目大意: 在n×m的地图上,0表示墙,1表示空地,2表示人,3表示目的地,4表示有定时炸弹重 ...

  8. javascript 函数的4种调用方式与 this(上下文)的指向

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! javascript中作用域链和this(上下文)的指向是很容易混淆的,简单的说就是: 作用域链取决于函数 ...

  9. 复习HTML+CSS(6)

    n  表格和表单的嵌套顺序 n  单行文本域 语法格式:<input type="text" 属性="值"> 常用属性 l  Name:文本框的名字 ...

  10. vue的入门/简介

    vue 特点 1. 响应的数据绑定/响应式编程  2. 组件化 vue优点 1. 轻量级的框架  2. 简单易学 3. 双向数据绑定 4. 组件化 5. 视图,数据,结构分离 6. 虚拟DOM 7. ...