SQL的连接(join)有哪些常见形式?解释一下?解释 SQL 的 left join 和 right join?
SQL的连接(join)有哪些常见形式?解释一下?解释 SQL 的 left join 和 right join?
SQL的连接(join)有哪些常见形式?
sql连接查询:把多张表的列组合在一起,产生新的结果表。
联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行。
SQL JOIN 类型:
- INNER JOIN:如果表中有至少一个匹配,则返回行
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN:只要其中一个表中存在匹配,则返回行
1.内连接(inner join)
只有两个表相匹配的行才能在结果集中显示出来
2.左连接(left join)
以左表为主,左表所有的数据都会在结果集中出现,右表根据左表对应的数据显示,与左表匹配的数据会显示,没有匹配的地方会显示为空
3.右连接(right join)
以右表为主,右表所有的数据都会在结果集中出现,左表根据左表对应的数据显示,与左表匹配的数据会显示,没有匹配的地方会显示为空
4完全连接(full join)
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行 包含基表的数据值。
内连接
交叉连接:交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
1.1 inner join相等连接
1.2 natural join自然连接
1.3 cross join交叉连接
外连接
左联接:是以左表为基准,右连接:是以右表为基准,全连接:完整外部联接返回左表和右表中的所有行。
2.1 left join左外连接
2.2 right join右外连接
2.3 full join全连接
自连接
自连接说白了其实就是两张表结构和数据内容完全一样的表,在做数据处理的时候,我们通常会给它们分别重命名来加以区分(言外之意:不重命名也不行啊,不然数据库也不认识它们谁是谁),然后进行关联。
自连接详细参考:知乎+如何理解SQL中的自连接?
注意:图中有益处错误,细心的你发现了吗?
left join 和 right join
left join 和 right join 都是两个表进行 merge 的操作,left join 是将右边的表 merge 到左边,right join 是将左边的表 merge 到右边,通常我们会指定按照哪几列进行 merge
举个例子:
left table
姓名 | 学号 |
---|---|
小红 | SZ1716029 |
小明 | SZ1716030 |
小王 | SZ1716031 |
right table
学号 | 排名 |
---|---|
SZ1716029 | 1 |
SZ1716030 | 2 |
left table left join right table on 学号
学号 | 姓名 | 排名 |
---|---|---|
SZ1716029 | 小红 | 1 |
SZ1716030 | 小明 | 2 |
SZ1716031 | 小王 | NULL |
left table right join right table on 学号
学号 | 姓名 | 排名 |
---|---|---|
SZ1716029 | 小红 | 1 |
SZ1716030 | 小明 | 2 |
参考:SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
参考:如何理解SQL中的自连接?
参考:SQL连接查询
参考:SQL中的四种连接方式
参考:sql四种连接方式
参考:SQL 连接(JOIN)
SQL的连接(join)有哪些常见形式?解释一下?解释 SQL 的 left join 和 right join?相关推荐
- SQL错误提示档案(3):SQL Server连接中的四个最常见错误
SQL Server连接中的四个最常见错误: 一."SQL Server 不存在或访问被拒绝" 一般说来,有以下几种可能性: ...
- SQL Server连接中的常见错误
SQL Server连接中的常见错误: 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性 ...
- SQL内连接-外连接join,left join,right join,full join
1.创建测试表test1及test2 SQL> CREATE TABLE TEST1(ID NUMBER,NAME VARCHAR2(20)); 表已创建.SQL> create tabl ...
- 部分常见ORACLE面试题以及SQL注意事项
一.表的创建: 一个通过单列外键联系起父表和子表的简单例子如下: CREATE TABLE parent(id INT NOT NULL, PRIMARY KEY (id) ) CREATE TABL ...
- sql 外连接的写法。
我地经常见到sql语句中 left outer join... right outer join... 其实对于新手来讲见到呢d字眼系最头痛的. 首先现做个说明 左外连接就是左连接 右外连接就 ...
- SQL Server连接表
SQL的主要特性之一是能够在数据检索查询中动态的联接各个表.连接表是使用SQL select最重要的操作之一,对连接和连接语法的学习理解是学习SQL重要的一部分. 在SQL server中,有的数据分 ...
- SQL Server 连接字符串和身份验证 学习
SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开. PropertyName1=Value1 ...
- 详解SQL Server连接(内连接、外连接、交叉连接)
在查询多个表时,我们经常会用"连接查询".连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系 ...
- sql server配置连接oracle数据库,MS SQL Server连接Oracle
MS SQL Server连接Oracle 1. 安装oracle 10G客户端 要访问oracle数据库必须安装oracle客户端.安装oracle客户端有两种方式,即完整安装和立即安装,这两种方 ...
最新文章
- NeurIPS提前看 | 四篇论文,一窥元学习的最新研究进展
- HDU 1251 统计难题 字典树/STL
- Python 调用Java
- python argparse nargs_Python | 使用argparse解析命令行参数
- Unix系统编程():分散输入和集中输出(Scatter-Gather IO):readv和writev
- idea 高级调试技巧
- android p获取通话记录_Android 底层的进程间同步机制
- CSS3过渡动画关键帧动画
- backtrack-回溯搜索算法总结
- Mac outlook设置HTML,设置苹果MAC 端outlook客户端说明
- office办公软件 下载与安装教程
- unity 创建自己的像素地图 TileMap
- 安装cuda后却没有CUDA Samples怎么办?
- Linux内核之进程管理《Linux内核设计与实现》
- 机器人学习笔记(一)
- python多线程请求接口_python多线程实现http请求
- 知识点六:jQuery遍历-同胞Siblings(), next(), nextAll()
- 宇宙存在三级量子--超越爱因斯坦
- H3C以太网基础实验H3CTE讲师分享
- 安装mongrel出错
热门文章
- php header setcookie,php中header头设置Cookie与内置setCookie的区别,和js对cookie操作
- 单目图像深度估计 - 泛化篇:S2R-DepthNet
- C++加线程锁详解篇
- 华人一作占半数,陶大程等人上榜,CVPR公布32篇最佳论文候选
- mysql大表迁移_MySQL 大表迁移
- ICML2020 | GCNII:使用初始残差和恒等映射解决过度平滑
- 单个神经元在深度网络中的作用
- 基于 gulp 的 fancybox 源码压缩
- MPB:中科院城环所杨军组-​​淡水浮游动物的采集及鉴定
- 研究生新生进入实验室后,如何成长?5点建议分享