图解SQL inner join、left join、right join、full outer join、union、union all的区别
对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过韦恩图(Venn diagram,可用来表示多个集合之间的逻辑关系)。解释了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 |
如果有where的时候,可以使用:
SELECT column_list
FROM t1
INNER JOIN t2 ON join_condition1
INNER JOIN t3 ON join_condition2
...
WHERE where_conditions;
更多参考:
PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
MySQL: 获取表结构 Get a MySQL table structure with DESCRIBE
关于 MySQL LEFT JOIN 你可能需要了解的三点
MySQL 临时表
本文转自: Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
图解SQL inner join、left join、right join、full outer join、union、union all的区别相关推荐
- 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(join)、left join、right join、full outer join、union、union all的区别...
对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...
- 图解SQL的inner 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 联接类型中最不为人知的.也许是因为与其他联接类型相比,外部联接的需求较少.无论如何,外部联接本身并没有什么奇特的.正如我们将在这篇文章中看到的几个外部联 ...
- SQL外部联合:right outer join、left outer join、full outer join
SQL将外部联合分为了右外部联合(right outer join).左外部联合(left outer join).完全外部联合(full outer join)3个类型. 左外部联合:LEFT OU ...
最新文章
- android progressbar 不显示_Android多线程技术选型最全指南(1)
- Ionic 标签中添加单击事件 、双击事件
- 动态内存的基本功能和使用
- cocos2d - CCSprite各种动画
- Unix环境高级编程学习笔记(七) 多线程
- 程序员面试金典 - 面试题 16.21. 交换和(哈希set)
- kettle连接mysql教程_kettle 连接 mysql8
- mysql5.7.24 rpm安装_centos7下安装mysql5.7.24
- stm32代码_ME3616 NB-IoT模组对接OneNET教程以及STM32代码
- python 位运算符与逻辑运算符(字符串的逻辑运算)
- adc0808模数转换实验报告_adc0808模数转换电路图及程序
- 测试用例设计之正交试验
- 实验五 IP协议分析实验
- 【Web】CSS(No.21)Css经典案例(三)《爱宠知识》
- [SSL_CHX][2021-8-19]数根
- 苹果MAC电脑双系统教程——MAC安装Windows双系统教程
- 金融python入门书籍推荐_学习金融工程,有哪些推荐的入门书籍?
- Python3+scrapy 爬取喜马拉雅音乐 音乐和歌名 最简单的爬虫
- Windows7 x64 瑞昱Realtek高清音频管理器均衡器用户定义文件 保存位置
- spring的task和quartz的区别
热门文章
- 信息学奥赛C++语言:短信计费
- 信息学奥赛一本通C++语言——1054:三角形判断
- 怎么锁定计算机密码忘了怎么办,如果忘记了手机数字锁的密码(仅需10秒钟即可解锁),该怎么办...
- java定时器异常,定时任务异常 高手进
- OpenCV稀疏矩阵SparseMat
- 全连接层的作用是什么?
- np.unique( )--去除数组中的重复数字,并进行排序之后输出
- Bootstrap-CSS-按钮-图片-辅助类-响应式
- phpcmsV9导航栏目点击跳转始终是localhost首页 bug - 分析篇
- 自适应粉色可爱棒棒糖倒立404错误页面源码