MySQL实现7种 SQL JOINS
MySQL实现7种 SQL JOINS
文章目录
- MySQL实现7种 SQL JOINS
- UNION 和 UNION ALL 关键字使用
- 7种SQL JOIN 实现
UNION 和 UNION ALL 关键字使用
MySQL在实现满外连接的时候,并不能像Oracle一样直接使用FULL OUTER JOIN
,因此需要使用 UNION
和 UNION ALL
两个关键字,UNION
和 UNION ALL
使用语法如下
SELECT column, .... from table1
UNION [ALL]
SELECT column, .... from table2
UNION操作符
UNION 操作符返回两个查询的结果集的并集,去除重复记录。
UNION ALL操作符
UNION ALL操作符返回两个查询的结果集的并集。对于两个结果集的重复部分,不去重。
注意:执行UNION ALL语句时所需要的资源比UNION语句少。如果明确知道合并数据后的结果数据 不存在重复数据,或者不需要去除重复的数据,则尽量使用UNION ALL语句,以提高数据查询的效率。
7种SQL JOIN 实现
数据库在进行多表查询的时候,应该会有以下七种JOIN情况如下图所示
MySQL具体实现案例如下
创建一张员工表
和一张部门表
,表结构如图
员工表
部门表
实现连接的SQL
## 中图 内连接
SELECT employee_id,department_name
FROM employees e JOIN departments d
ON e.department_id = d.department_id## 左上图 左外连接
SELECT employee_id,department_name
FROM employees e LEFT JOIN departments d
ON e.department_id = d.department_id# 右上图 右外连接
SELECT employee_id,department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id = d.department_id## 左中图
SELECT employee_id,department_name
FROM employees e LEFT JOIN departments d
ON e.department_id = d.department_id
WHERE d.department_id IS NULL## 右中图
SELECT employee_id,department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id = d.department_id
WHERE e.department_id IS NULL## 左下图: 满外连接
# 方式1: 左上图 UNION ALL 右中图
SELECT employee_id,department_name
FROM employees e LEFT JOIN departments d
ON e.department_id = d.department_id
UNION ALL
SELECT employee_id,department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id = d.department_id
WHERE e.department_id IS NULL# 方式2: 左中图 UNION ALL 右上图
SELECT employee_id,department_name
FROM employees e LEFT JOIN departments d
ON e.department_id = d.department_id
WHERE d.department_id IS NULL
UNION ALL
SELECT employee_id,department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id = d.department_id# 方式3 左上图 UNION 右上图 (不推荐使用 UNION,效率低)
SELECT employee_id,department_name
FROM employees e LEFT JOIN departments d
ON e.department_id = d.department_id
UNION
SELECT employee_id,department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id = d.department_id## 右下图 左中图 UNION ALL 右中图
SELECT employee_id,department_name
FROM employees e LEFT JOIN departments d
ON e.department_id = d.department_id
WHERE d.department_id IS NULL
UNION ALL
SELECT employee_id,department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id = d.department_id
WHERE e.department_id IS NULL
MySQL实现7种 SQL JOINS相关推荐
- MySQL:七种 SQL JOINS 的实现(图文详解)
MySQL:7种SQL JOINS的实现 前言 一.图示表示 二.代码举例 1.INNER JOIN(内连接) 2.LEFT JOIN(左连接) 3.RIGHT JOIN(右连接) 4.OUTER J ...
- 你不知道的 ,MySQL中的七种SQL JOINS的实现,满外连接
七种SQL JOINS的实现,满外连接 每博一文案 英国作家摩姆说过,我们每个人在世界上都是孤独的,因此 我们只能孤独地行走,尽管身体相互依傍,却并不在一起. 既不了解别的人,也不能为别人所了解. 当 ...
- SQL 7种SQL JOINS的实现
以下介绍皆为SQL语言 99语法 mysql 7种SQL JOINS 包括: departments 表 (注意看都有那些列) employees 表(注意都有那些列) 1.内连接: 内连接是通过 ...
- Mysql常规27种sql查询语句
Mysql常规27种sql查询语句 话不多说,直接上干货 1.查询部分列 select 列名 from 表名 例:员工表中查询员工编号.名字.邮箱 select employee_id,employe ...
- 7种SQL JOINS 的实现
Table A设置如下: Table B设置如下: 在Table A和Table B的基础上实现MySQL的七种JOINS # 7种 Sql JOIN的实现# 1.中图 : 内连接 SELECT em ...
- MySQL:8种SQL典型错误用法,值得收藏!
1.LIMIT语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引. ...
- Mysql常用30种SQL查询语句优化方法
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...
- MySQL 常用30种SQL查询语句优化方法
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描.2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及 ...
- MySql基础篇---002 SQL之SELECT使用篇: 基本的SELECT语句,运算符,排序与分页,多表查询,单行函数,聚合函数,子查询
第03章_基本的SELECT语句 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. SQL概述 1.1 SQL背景知识 1946 年,世界上第一台电脑 ...
最新文章
- 怎么关闭eureka的服务_SpringCloud微服务踩坑系列之二
- 运用El表达式截取字符串/获取list的长度
- Spring Cloud Eureka 入门 (二)服务提供者详解
- Python | 使用__del __()和__init __()实现析构函数和构造函数的示例
- 红魔1android版本能升到多少,红魔5G:实力全开,比快更快
- Linux网络协议栈:一个TCP链接的耗时
- 多项logistic回归系数解释_因变量无序多分类资料的logistic回归
- Flex 4中组件背景设置(填充方式)group为例子
- 计算机网络知识大总结,包含各种熟悉得不能再熟悉的术语解析
- Codeforces Round #215 (Div. 2) B. Sereja and Suffixes map
- 使用匿名内部类排序对象
- pdf怎么设置密码?
- 去除pdf文件的许可口令(密码)
- 《Cinema 4D + After Effects动态图形设计案例解析》——第 1 章 动态图形设计概述 1.1 什么是动态图形...
- 一般人看不透!沉默的大多数用户才是产品发展的关键!
- 阿里资深技术专家带你聊一聊——服务端的接口测试...
- 2021-11-3 软件模拟IIC时序,并和EEPROM存储芯片24C02双向通信以及显示功能
- 期末前端web大作业:用DIV+CSS技术设计的动漫网站——火影忍者6页 带报告
- pentaho使用步骤简介
- SAP中导出电子表格问题处理案例