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?相关推荐

  1. SQL错误提示档案(3):SQL Server连接中的四个最常见错误

    SQL   Server连接中的四个最常见错误:         一."SQL   Server   不存在或访问被拒绝"          一般说来,有以下几种可能性:     ...

  2. SQL Server连接中的常见错误

    SQL Server连接中的常见错误: 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性 ...

  3. SQL内连接-外连接join,left join,right join,full join

    1.创建测试表test1及test2 SQL> CREATE TABLE TEST1(ID NUMBER,NAME VARCHAR2(20)); 表已创建.SQL> create tabl ...

  4. 部分常见ORACLE面试题以及SQL注意事项

    一.表的创建: 一个通过单列外键联系起父表和子表的简单例子如下: CREATE TABLE parent(id INT NOT NULL, PRIMARY KEY (id) ) CREATE TABL ...

  5. sql 外连接的写法。

    我地经常见到sql语句中 left outer join...    right outer join...  其实对于新手来讲见到呢d字眼系最头痛的. 首先现做个说明 左外连接就是左连接 右外连接就 ...

  6. SQL Server连接表

    SQL的主要特性之一是能够在数据检索查询中动态的联接各个表.连接表是使用SQL select最重要的操作之一,对连接和连接语法的学习理解是学习SQL重要的一部分. 在SQL server中,有的数据分 ...

  7. SQL Server 连接字符串和身份验证 学习

    SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开.           PropertyName1=Value1 ...

  8. 详解SQL Server连接(内连接、外连接、交叉连接)

    在查询多个表时,我们经常会用"连接查询".连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系 ...

  9. sql server配置连接oracle数据库,MS SQL Server连接Oracle

    MS SQL Server连接Oracle 1.  安装oracle 10G客户端 要访问oracle数据库必须安装oracle客户端.安装oracle客户端有两种方式,即完整安装和立即安装,这两种方 ...

最新文章

  1. NeurIPS提前看 | 四篇论文,一窥元学习的最新研究进展
  2. HDU 1251 统计难题 字典树/STL
  3. Python 调用Java
  4. python argparse nargs_Python | 使用argparse解析命令行参数
  5. Unix系统编程():分散输入和集中输出(Scatter-Gather IO):readv和writev
  6. idea 高级调试技巧
  7. android p获取通话记录_Android 底层的进程间同步机制
  8. CSS3过渡动画关键帧动画
  9. backtrack-回溯搜索算法总结
  10. Mac outlook设置HTML,设置苹果MAC 端outlook客户端说明
  11. office办公软件 下载与安装教程
  12. unity 创建自己的像素地图 TileMap
  13. 安装cuda后却没有CUDA Samples怎么办?
  14. Linux内核之进程管理《Linux内核设计与实现》
  15. 机器人学习笔记(一)
  16. python多线程请求接口_python多线程实现http请求
  17. 知识点六:jQuery遍历-同胞Siblings(), next(), nextAll()
  18. 宇宙存在三级量子--超越爱因斯坦
  19. H3C以太网基础实验H3CTE讲师分享
  20. 安装mongrel出错

热门文章

  1. php header setcookie,php中header头设置Cookie与内置setCookie的区别,和js对cookie操作
  2. 单目图像深度估计 - 泛化篇:S2R-DepthNet
  3. C++加线程锁详解篇
  4. 华人一作占半数,陶大程等人上榜,CVPR公布32篇最佳论文候选
  5. mysql大表迁移_MySQL 大表迁移
  6. ICML2020 | GCNII:使用初始残差和恒等映射解决过度平滑
  7. 单个神经元在深度网络中的作用
  8. 基于 gulp 的 fancybox 源码压缩
  9. MPB:中科院城环所杨军组-​​淡水浮游动物的采集及鉴定
  10. 研究生新生进入实验室后,如何成长?5点建议分享