当前位置: 首页 > news >正文

[数据库基础]——图解JOIN

阅读导航

一、概要

二、JOIN分类

三、JOIN分类详解

一、概要

JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操作。

图片是很容易被接受和理解,所以尝试使用图片来说明一下。

二、JOIN分类

客官:小二,上JOIN分类!

……

小二:客官,新鲜出炉的JOIN分类图片来喽。

JOIN

三、JOIN分类详解

客官:小二,速速详细道来!

小二:现在让小二来给您详细介绍。

INNER JOIN:

仅仅返回两个表中,匹配列相同的列值,所在行的数据。

InnerJOIN

SELECT * FROM Table1 t1 INNER JOIN Table2 t2 ON t1.Col1 = t2.Col1

LEFT OUTER JOIN:

左外连接:返回左表的所有数据,并且在右表中不能匹配的列值,其坐在行则使用空值。

LEFTOUTERJOIN

SELECT * FROM Tables1 t1 LEFT OUTER JOIN Table2 t2 on t1.Col1 = t2.Col2

LEFT OUTER JOIN - WHERE NULL:

返回和右表不匹配的所有数据行

LEFTOUTERJOIN-WHERENULL

SELECT * FROM Table1 t1 LEFT OUTER JOIN Table2 t2 ON t1.Col1 = t2.Col1 WHERE t2.Col1 IS NULL

RIGHT OUTER JOIN:

右外连接:返回右表的所有数据,并且在左表中不能匹配的列值,其所做在行则使用空值。

RIGHTOUTERJOIN

SELECT * FROM Tables1 t1 RIGHT OUTER JOIN Table2 t2 on t1.Col1 = t2.Col2

RIGHT OUTER JOIN – WHERE NULL:

返回和左表不匹配的所有数据行。

RIGHTOUTERJOIN–WHERENULL

SELECT * FROM Table1 t1 RIGHT OUTER JOIN Table2 t2 ON t1.Col1 = t2.Col1 WHERE t1.Col1 IS NULL

FULL OUTER JOIN:

完全连接可看作是左外连接和右外连接结果之和,返回两个表的所有数据,如果匹配列的值在两个表中匹配,那么返回数据行,否则返回空值。

FULLOUTERJOIN

SELECT * FROM Table1 t1 FULL OUTER JOIN Table2 t2 ON t1.Col1 = t2.Col1 

FULL OUTER JOIN – WHERE NULL:

返回内连接以外的数据行,即匹配列坐在行以外的所有数据。

FULLOUTERJOIN–WHERENULL

SELECT * FROM Table1 t1 FULL OUTER JOIN Table2 t2 ON t1.ID = t2.ID WHERE t1.ID IS NULL OR t2.ID IS NULL

CROSS JOIN:

交叉连接不需要任何连接条件。这个会把两个表的的数据进行笛卡尔积操作。

CrossJOIN

SELECT * FROM Table1 t1 CROSS JOIN Table2 t2

小二:小二已经介绍完毕,客官,请慢用。准备洗漱睡觉了。

相关文章:

  • Android手机一键Root原理分析
  • Win32_3Bitmap位图应用2 ------ 键盘控制人物走动
  • 布隆过滤器原理
  • C# 网络编程之最简单浏览器实现
  • Win32_4深入浅出Win32的计时器
  • response.IsClientConnected参考
  • 参数化SQL小认识
  • Win32_5程序员求爱的创意程序^_^
  • cisco单臂路由
  • VC2010中 调用DLL的方法
  • Win32_6Win32的验证码程序
  • iOS Xcode, 解决“Could not insert new outlet connection”的问题。
  • Win32_7由浅入深——滚动条
  • 简单实现web服务器负载均衡
  • Android编程之ActivityManager: Segmentation fault
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 3.7、@ResponseBody 和 @RestController
  • Angular 2 DI - IoC DI - 1
  • Java 最常见的 200+ 面试题:面试必备
  • Linux中的硬链接与软链接
  • Magento 1.x 中文订单打印乱码
  • PHP那些事儿
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • sessionStorage和localStorage
  • 关于字符编码你应该知道的事情
  • 基于游标的分页接口实现
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 微信开放平台全网发布【失败】的几点排查方法
  • 小程序开发中的那些坑
  • 一起参Ember.js讨论、问答社区。
  • k8s使用glusterfs实现动态持久化存储
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • # 计算机视觉入门
  • #pragma once
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (办公)springboot配置aop处理请求.
  • (万字长文)Spring的核心知识尽揽其中
  • (译)2019年前端性能优化清单 — 下篇
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .NET : 在VS2008中计算代码度量值
  • .Net 6.0 处理跨域的方式
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET Core 中插件式开发实现
  • .net 后台导出excel ,word
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • @font-face 用字体画图标
  • @JoinTable会自动删除关联表的数据
  • @Query中countQuery的介绍
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)
  • [C# 基础知识系列]专题十六:Linq介绍
  • [cb]UIGrid+UIStretch的自适应
  • [CLickhouse] 学习小计