【SQL】【Join基础】了解sql中的join用法,看这一篇就够了
转自: https://www.cnblogs.com/reaptomorrow-flydream/p/8145610.html
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)、SQL LEFT JOIN、SQL RIGHT JOIN、SQL FULL JOIN,其中前一种是内连接,后三种是外链接。
假设我们有两张表,Table A是左边的表,Table B是右边的表。
| id | name |
| 1 | |
| 2 | 淘宝 |
| 3 | 微博 |
| 4 |
| id | address |
| 1 | 美国 |
| 5 | 中国 |
| 3 | 中国 |
| 6 | 美国 |
INNER JOIN
内连接是最常见的一种连接,只连接匹配的行。
inner join语法
select column_name(s)
from table 1
INNER JOIN table 2
ON
table 1.column_name=table 2.column_name
注释:INNER JOIN与JOIN是相同

INNER JOIN产生的结果集中,是1和2的交集。
select * from Table A inner join Table B
on Table A.id=Table B.id
执行以上SQL输出结果如下:
| id | name | address |
| 1 | 美国 | |
| 3 | 微博 | 中国 |
LEFT JOIN
LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。
LEFT JOIN 语法
select column_name(s)
from table 1
LEFT JOIN table 2
ON table 1.column_name=table 2.column_name
注释:在某些数据库中,LEFT JOIN 称为LEFT OUTER JOIN

LEFT JOIN产生表1的完全集,而2表中匹配的则有值,没有匹配的则以null值取代。
select * from Table A left join Table B
on Table A.id=Table B.id
执行以上SQL输出结果如下:
| id | name | address |
| 1 | 美国 | |
| 2 | 淘宝 | null |
| 3 | 微博 | 中国 |
| 4 | null |
RIGHT JOIN
RIGHT JOIN返回右表的全部行和左表满足ON条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。
RIGHT JOIN语法
select column_name(s)
from table 1
RIGHT JOIN table 2
ON table 1.column_name=table 2.column_name
注释:在某些数据库中,RIGHT JOIN 称为RIGHT OUTER JOIN

RIGHT JOIN产生表2的完全集,而1表中匹配的则有值,没有匹配的则以null值取代。
select * from Table A right join Table B
on Table A.id=Table B.id
执行以上SQL输出结果如下:
| id | name | address |
| 1 | 美国 | |
| 5 | null | 中国 |
| 3 | 微博 | 中国 |
| 6 | null | 美国 |
FULL OUTER JOIN
FULL JOIN 会从左表 和右表 那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替
FULL OUTER JOIN语法
select column_name(s)
from table 1
FULL OUTER JOIN table 2
ON table 1.column_name=table 2.column_name

FULL OUTER JOIN产生1和2的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。
select * from Table A full outer join Table B
on Table A.id=Table B.id
执行以上SQL输出结果如下:
| id | name | address |
| 1 | 美国 | |
| 2 | 淘宝 | null |
| 3 | 微博 | 中国 |
| 4 | null | |
| 5 | null | 中国 |
| 6 | null | 美国 |
【SQL】【Join基础】了解sql中的join用法,看这一篇就够了的更多相关文章
- Java中的多线程=你只要看这一篇就够了
如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...
- PL/SQL编程基础——PL/SQL简介
课程教师:李兴华 课程学习者:阳光罗诺 日期:2018-07-28 知识点: 1. 了解PL/SQL的主要特点 2. 掌握PL/SQL块的基本结构 PL/SQL PL/SQL是Oracle在关系数据库 ...
- 面试中问你MySql,这一篇就够了
说一说主键索引与唯一索引 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键索引默认是聚簇索引.唯一索引一般是非聚簇索引. 主键索引不能为空,唯一索引在InnoDB中可以出现多个null ...
- java 线程基础篇,看这一篇就够了。
前言: Java三大基础框架:集合,线程,io基本是开发必用,面试必问的核心内容,今天我们讲讲线程. 想要把线程理解透彻,这需要具备很多方面的知识和经验,本篇主要是关于线程基础包括线程状态和常用方法. ...
- Python3中的列表用法,看这一篇就够了
类似C语言中的列表用法 ---------------------------------------------------------------------------------------- ...
- 【SQL server基础】SQL视图加密,永久隐藏视图定义的文本
SQL可以对视图进行加密.也就是,可永久隐藏视图定义的文本. 注意 此操作不可逆.加密视图后,无法再修改它,因为无法再看到视图定义.如果需要修改加密视图,则必须删除它并重新创建另一个视图. 示例代 ...
- 【SQL server基础】SQL存储过程和函数的区别
本质上没区别.只是函数有如:只能返回一个变量的限制.而存储过程可以返回多个.而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行.执行的本质都一样. 函数限制比较多,比 ...
- 学习笔记:oracle学习三:SQL语言基础之sql语言简介、用户模式
目录 1.sql语言简介 1.1 sql语言特点 1.2 sql语言分类 1.3 sql语言的编写规则 2.用户模式 2.1 模式与模式对象 2.2 实例模式scott 本系列是作为学习笔记,用于记录 ...
- spark中的pair rdd,看这一篇就够了
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题的第四篇文章,我们一起来看下Pair RDD. 定义 在之前的文章当中,我们已经熟悉了RDD的相关概念,也了解了RDD基 ...
随机推荐
- 一 django框架?
Django-1 一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞 ...
- freedom is a kind of responsibility
张维迎教授在2017年7月1日北大国发院2017届毕业典礼上的发言<自由是一种责任> 张维迎:自由是一种责任 本文为张维迎教授在2017年7月1日北大国发院2017届毕业典礼上的发言 ...
- 设计模式之Interpreter(解释器)(转)
Interpreter定义: 定义语言的文法 ,并且建立一个解释器来解释该语言中的句子. Interpreter似乎使用面不是很广,它描述了一个语言解释器是如何构成的,在实际应用中,我们可能很少去构造 ...
- Linux基础命令---切换用户su
su 临时切换身份到另外一个用户,使用su切换用户之后,不会改变当前的工作目录,但是会改变一些环境变量. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUS ...
- Codeforce 513A - Game
Two players play a simple game. Each player is provided with a box with balls. First player's box co ...
- Linux 卸载 MySQL 数据库
1. 使用以下命令查看当前安装mysql情况 rpm -qa|grep -i mysql 显示之前安装过的数据库 2. 停止mysql服务.删除之前安装的mysql 删除命令: rpm -ev 包名若 ...
- 基于spring框架的jt项目分页查询知识点(一)
知识点汇总(一) 1. 点击事件函数 $(function(){ //事件注册,(表示在#pageId对应容器对象的相关子元素中注册click事件) $("#pageId").on ...
- 2017第十三届湖南省省赛A - Seating Arrangement CSU - 1997
Mr. Teacher老师班上一共有n个同学,编号为1到n. 在上课的时候Mr. Teacher要求同学们从左至右按1, 2, …, n的顺序坐成一排,这样每个同学的位置是固定的,谁没来上课就一目了然 ...
- Centos下10000次循环测试php对Redis和共享内存(shm)读写效率
redis和memcache还有共享内存都是读取内存的数据,为了测试一下到底效率谁更胜一筹,我在我的Centos虚拟机下做了一次公平的测试. 测试参数 环境:Centos (配置忽略).语言:PHP. ...
- MD5与SHA散列单项加密
MD5 MD5的英文全称是Message Digest Algorithm MD5,译为消息摘要算法第五版,是众多哈希算法中的一种(哈希算法是一种可以将任意长度的输入转化为固定长度输出的算法).因此M ...