图解SQL的inner join、left join、right join、full outer join、union、union all的区别
对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过文氏图 Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。
假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所示:让我们看看不同JOIN的不同
A表 | |
id | name |
1 | Pirate |
2 | Monkey |
3 | Ninja |
4 | Spaghetti |
B表 | |
id | name |
1 | Rutabaga |
2 | Pirate |
3 | Darth Vade |
4 | Ninja |
1.INNER JOIN
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
结果集 | |||
(TableA.) | (TableB.) | ||
id | name | id | name |
1 | Pirate | 2 | Pirate |
3 | Ninja | 4 | Ninja |
Inner join 产生的结果集中,是A和B的交集。
结果集 | |||
(TableA.) | (TableB.) | ||
id | name | id | name |
1 | Pirate | 2 | Pirate |
2 | Monkey | null | null |
3 | Ninja | 4 | Ninja |
4 | Spaghetti | null | null |
null | null | 1 | Rutabaga |
null | null | 3 | Darth Vade |
WHERE TableA.id IS null OR TableB.id IS null
结果集 | |||
(TableA.) | (TableB.) | ||
id | name | id | name |
2 | Monkey | null | null |
4 | Spaghetti | null | null |
null | null | 1 | Rutabaga |
null | null | 3 | Darth Vade |
结果集 | |||
(TableA.) | (TableB.) | ||
id | name | id | name |
1 | Pirate | 2 | Pirate |
2 | Monkey | null | null |
3 | Ninja | 4 | Ninja |
4 | Spaghetti | null | null |
结果集 | |||
(TableA.) | (TableB.) | ||
id | name | id | name |
2 | Monkey | null | null |
4 | Spaghetti | null | null |
产生在A表中有而在B表中没有的集合。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。UNION 只选取记录,而UNION ALL会列出所有记录。
新结果集 |
name |
Pirate |
Monkey |
Ninja |
Spaghetti |
Rutabaga |
Darth Vade |
新结果集 |
name |
Pirate |
Monkey |
Ninja |
Spaghetti |
Rutabaga |
Pirate |
Darth Vade |
Ninja |
全部列出来
(3)注意:
新结果集 | |
id | name |
1 | Pirate |
2 | Monkey |
3 | Ninja |
4 | Spaghetti |
1 | Rutabaga |
2 | Pirate |
3 | Darth Vade |
4 | Ninja |
感谢!http://blog.diyiye.com/?post=10
转载于:https://www.cnblogs.com/andy-wcl/archive/2013/03/09/3218144.html
图解SQL的inner join、left join、right join、full outer join、union、union all的区别相关推荐
- sql sum条件求和_SQL进阶7外连接(outer join)
本文中介绍的SQL中行列转换和嵌套式侧栏的生成,将SQL语句查询的结果转换成我们想要的结果. 行转列,制作交叉表头 列转行 实现行列转换(行->列):制作交叉表 需求 根据下面的表Courses ...
- oracle full outer join,oracle 内连接(inner join)、外连接(outer join)、全连接(full join)...
建表语句: create table EMPLOYEE ( EID NUMBER, DEPTID NUMBER, ENAME VARCHAR2(200) ) create table DEPT ( D ...
- 图解SQL inner join、left join、right join、full outer join、union、union all的区别
对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...
- 图解SQL的inner join(join)、left join、right join、full outer join、union、union all的区别...
对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...
- Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...
- full outer join 与full join的区别_基础小白的SQL的JOIN语法解析
总的来说,四种JOIN的使用/区别可以描述为: left join 会从左表(shop)那里返回所有的记录,即使在右表(sale_detail)中没有匹配的行. right outer join 右连 ...
- SQL中的left outer join,inner join,right outer join用法 (左右内连接)
SQL语句中的left outer join,inner join,right outer join用法 left outer join=left join , right outer join= ...
- SQL OUTER JOIN概述和示例
This article will provide a full overview, with examples of the SQL Outer join, including the full, ...
- 干货 | SQL 外部联接 Outer Join
外部联接(Outer Join)是所有 SQL 联接类型中最不为人知的.也许是因为与其他联接类型相比,外部联接的需求较少.无论如何,外部联接本身并没有什么奇特的.正如我们将在这篇文章中看到的几个外部联 ...
最新文章
- mysql int char连接_MySQL中int、char以及varchar的性能比较
- vbn中使用的3种流程控制结构是_细菌进化树构建:从模式种序列下载到构建系统发育树一键搞定...
- 对高并发流量控制的一点思考
- C#数据结构(一)----线性表
- SOX 音频处理工具基本使用
- 命令提示符下对用户的操作
- 删除的时候提示“该项目不在C:\User\桌面 中
- python人体识别_Github开源人体姿态识别项目OpenPose中文文档
- 员工管理的html页面,员工管理.html
- paip.提高开发效率----自动数据库SQL备份
- 查看局域网中的其他机器的IP地址
- 《21天学通Java(第6版)》—— 1.2 面向对象编程
- External Libraries中没有Maven的jar包的原因(已解决)
- 是时候激活你的批判性思维了
- 无积分怎么下载百度文库的文档
- windows bat批处理基础命令学习教程(转载)
- 平衡二叉树的调整整理
- 既是消费者也是管理者:纽约州分布式能源改革
- python之excel编程
- 《机器学习实战》萌新读书笔记 ② — — 第三章 决策树 内容提要、知识拓展和详细注释代码
热门文章
- iOS 去除警告 看我就够了
- C#使用Microsoft.ACE.OLEDB.12.0 需要安装的组件
- MATLAB入门学习(三)
- android深度探索 HAL及驱动开发 第八章
- 赵雅智:service_startService生命周期
- Android获取最新发送短信的基本信息,没有之一
- 解决$router.go(-1)返回上一层页面不刷新页面问题
- either fix the issues identified by lint, or modify your build script as follows
- clion 查看内容窗口_苹果电脑(macOS)查看 WiFi 密码的两种方法
- input=file 浏览时只显示指定excel文件,筛选特定文件类型