图解SQL的inner join(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
JOIN其实是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 |
结果集 | |||
(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表中没有的集合。
新结果集 |
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 |
转载于:https://www.cnblogs.com/fromzerotohero/p/3727197.html
图解SQL的inner join(join)、left join、right join、full outer join、union、union all的区别...相关推荐
- SQL中的left outer join,inner join,right outer join用法
使用关系代数合并数据 1 关系代数 合并数据集合的理论基础是关系代数,它是由E.F.Codd于1970年提出的. 在关系代数的形式化语言中: ? 用表.或者数据集合表示关系或者实体. ...
- SQL中的left outer join,inner join,right outer join用法详解1
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行. LEFT JOIN 关键字语法 SELECT column_ ...
- 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外部联合:right outer join、left outer join、full outer join
SQL将外部联合分为了右外部联合(right outer join).左外部联合(left outer join).完全外部联合(full outer join)3个类型. 左外部联合:LEFT OU ...
- 零基础自学SQL课程 | OUTER JOIN外连接
大家好,我是宁一. 今天讲解SQL教程第12课:OUTER JOIN外连接. 外连接是左外连接(LEFT OUTER JOIN).右外连接(RIGHT OUTER JOIN).全外连接(FULL OU ...
- SQL入门之第十一讲——OUTER JOIN 外连接
外连接是左外连接(LEFT OUTER JOIN),右外连接(RIGHT OUTER JOIN),全外连接(FULL OUTER JOIN)的统称. 一般情况下直接忽视掉OUTER就可以,直接统称: ...
- left join 和 left outer join 的区别【转】
通俗的讲: A left join B 的连接的记录数与A表的记录数同 A right join B 的连接的记录数与B表的记录数同 A ...
- 【转】left join 和 left outer join 的区别
left join 和 left outer join 的区别 通俗的讲: A left join B 的连接的记录数与A表的记录数同 A right join ...
- join left semi_Hive的left join、left outer join和left semi join三者的区别
Hive的Join的文档说明地址: https://cwiki.apache.org/confluence/display/Hive/LanguageManual%2BJoins 以下为两个测试数据表 ...
最新文章
- 华为服务器HBA卡在哪个位置,服务器hba 设置
- 逻辑回归(使用多项式特征)
- [Jarvis OJ - PWN]——[XMAN]level0
- 网络相关配置,SSH服务,bash, 元字符
- 快速分类–三向和双枢轴
- zoj2008 最短路
- nginx php分离,nginx-php配置动静分离
- Elasticsearch--springcloud整合 high-level-client---全文检索引擎ElasticSearch工作笔记023
- redis源码剖析(1):基础数据结构SDS
- 80. Session
- lua劈分字符串方法及实例
- java 排队实现_Java实现排队论的原理
- Mongodb 监控安装配置
- 信息学奥赛一本通1258:【例9.2】数字金字塔题解
- 利用LVS(Linux Virtual Server)系统实现Web服务器集群的负载均衡
- TPM零知识学习十一 —— tpm全安装流程复盘(下)
- Test Case Design Method - OATS
- 你还在担心期末复习没有题目做?爬虫帮帮你
- Android--vitamio实现播放器
- 通过一个App Demo的演示深入理解区块链运行原理