IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 也谈关系型数据库连接查询类型 -> 正文阅读

[大数据]也谈关系型数据库连接查询类型

??????? 谈到数据库连接类型,相信但凡是接触过sql语言的人或多或少都能说上几个名词。可细究连接查询类型的分类标准,网上也是众说纷纭,分类方法混乱,不便于初学者理解。

?????? 这个问题好比有人问三角形分为哪些类型,如果罗列为有锐角三角形,等腰三角形,等边三角形......,这样的一股脑的罗列法将三角形类型有关的名词都说了出来,可是毫无意义。须知要分类一定要从某个测度作为衡量标准,才能系统的有条理的讲清楚。可以梳理为按照三角形内角的类型,将三角形分为锐角三角形,直角三角形,钝角三角形。按照三角形边长的关系,将三角形分为等腰三角形(特殊的,等边三角形也是等腰三角形,只是条件更加细化衍生出的分类),非等腰三角形。

?????? 思考之余,个人决定尝试从同一测度出发,将连接查询类型进行梳理。可如此分类描述:


1. 按照连接条件分类:

(1)? 等值连接:等值连接是关系运算-连接运算的一种常用的连接方式。是条件连接(或称θ? 连接)在连接运算符为“=”号时,即θ=0时的一个特例。

(2)? 非等值连接:当是条件连接在连接运算符不为“=”号时。


2. 按照结果集内容分类:

(1)? 内连接(INNER JOIN):在SQL99标准中,仅返回匹配行的联接称为内连接。

在SQL语法中,关键字INNER JOIN可简写为JOIN

(2) 外连接(OUTER JOIN):

左外连接(LEFT OUTER JOIN):返回内连接联接的结果以及左表中不匹配的行的两个表之间的联接称为左联接。关键字LEFT OUTER JOIN可简写为LEFT JOIN。

右外连接(RIGHT OUTER JOIN):返回内连接联接的结果以及右表中不匹配的行的两个表之间的联接称为右联接。关键字RIGHT OUTER JOIN可简写为RIGHT JOIN。

全外连接(FULL OUTER JOIN):两个表之间的联接是一个完整的外部联接,返回内连接的结果以及左表和右表中不匹配的行关键字FULL OUTER JOIN可简写为FULL JOIN。提示,MySQL数据库没有实现全外连接,可以通过??? 两表之间左外连接???? UNION ?? 两表之间右外连接??? 的方式来得到想要的结果集。

(3) 交叉连接(CROSS JOIN):产生结果集为笛卡尔积(Cartesian Product)。MySQL也实现了交叉连接。


提到连接类型,还有一些名词经常被提到:

自然连接(NATURAL JOIN):

从关系演算的角度来定义,自然连接是关系R和S在所有公共属性(common attribute)上的等接(Equijoin)。但在得到的结果中公共属性只保留一次,其余删除。说得通俗一点,自然连接要求两个关系中进行比较的分量必须是相同的属性组,并且会在结果中把重复的属性列去掉。

从定义描述可以看出,由连接条件的角度来说,自然连接是一种特殊的等值连接;而结果集内容的角度来看,自然连接也是内连接。

自连接(SELF JOIN):自连接可以将自身表的一个镜像当作另一个表来对待。是从连接关键字左右两边的表是否是同一张表的角度衍生出名词。从由连接条件的角度来说,自连接可能是等值连接也可能是非等值连接;而结果集内容的角度来看,自连接既可以做内连接,又可以做外连接,也完全可以全连接或交叉连接。

谈到这里,连接类型中一些常见的名词差不多提到了,再思考个问题:

1. 内连接和等值连接的关系

内连接一定是等值连接吗?不一定。内连接完全可以是非等值连接!

6条结果(笛卡尔积和3个等值情况的差集)

同理,外连接也可以做非等值连接,只是一般在实际业务背景下,等值连接的逻辑更常见而已。

计算机存储需要数据结构,人脑也是一样的,只有将知识结构化,才能理解得更透彻,更清晰。写这篇小谈的初衷是想帮自己做个梳理,也可供初学sql的人参考。本人才疏学浅,有错误或不当之处,还望大家不吝赐教。

?

?

?


?? ??? ??? ??? ?
?? ??? ??? ??? ??? ?
?? ??? ??? ?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:41:33  更:2021-11-19 17:41:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:39:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码