数据库之SQL(基本连接,内连接,左外连接,右外连接,全外连接,交叉连接,自连接)

article/2025/9/23 20:55:27

     之前的博客内容我们分享了数据表的查询与管理,但那只是针对数据库中的一个表格进行的查询管理,现在如果我们想要同时看到两个数据表中的数据的话,那要怎么办呢?采用多连接查询的方式。

     SQL中有哪几种多连接的方式?

     有七种连接的方式:

基本连接,内连接,左外连接,右外连接,全外连接,交叉连接,自连接

    如果对连接方式了解的人看到这里会感到很熟悉,但对于不了解的人则是一头雾水,没关系,我们来梳理一下,了解的人可以再重复一遍, 顺便可以提点意见^_^,不了解的人我们来先初步认识一下以上七种连接方式。

一、基本连接

①什么是基本连接?

基本连接又称多表连接,是对多个表内容的查询与连接。

②为什么会有多表连接的存在?

基于数据库的范式理论,数据库的数据查询一个表格未能把信息全部查询出来,所以就涉及到了多表连接的查询。

③多表连接如何连接?

select 不同表格中的列名

from 不同表格

问题一

A,B代表什么?

AB是此代码中的简化定义,在From子句中,表格后面加一个空格即表示可以创建快捷访问或者是重新命名,即班级信息为A表,梅里号为B表

问题二

为什么搜索出来这么多信息?

梅里号表中的数据如下:

因为以上只是select from 的查询语句,而代码则设置了7个内容,所以共查询了7次。以上表格只是简单的查询语句,我们还没有完成多表的连接,多表连接的三要素中我们还差一个where语句。

问题三

加上where语句的效果?

 

这就查询出来咯,所以,通过以上的例子让我们更加清晰的看到了多表连接的三个必要条件。

问题四

where 在这里起什么作用呢?

关系连接:A表中的班级与B表中的班级建立关联。

二、内连接

①什么是内连接?

内连接也是多表连接,对多表数据进行查询和连接

②那与基本连接有什么区别呢?

我们先看一下他的代码及操作效果:

 

会发现与基本连接的查询结果是一样的。

那区别在哪里?

内连接与基本连接的查询效果是一样的,都是对多表的查询,只是表现形式,代码不一样而已。

我们看一下代码区别:

基本连接:

内连接:

即在第二个和第三个必备条件上面有区别。

三、外连接,左外连接,右外连接,全外连接

①什么是外连接?

在了解外连接之前我们再重申一下内连接

内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。

左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。

右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。

全外连接:左外连接 + 右外连接。

②内连接与外连接如何区分?

我的个人理解,内外可看做是符合条件的行与符合条件的行

③外连接、左外连接、右外连接,全外连接有什么区别?

我们拿代码及其效果来说话:

A表:梅里号数据:

B表:班级信息数据

内连接:

连接结果仅包含符合连接条件的行

外连接:

连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。

左外连接:

不仅包含1-6符合条件的行,还包含左侧的梅里号表中的不符合条件的其他全部数据。

右外连接:

不仅包含1-6符合条件的行,还包含右侧的班级信息表中的其他不符合条件的全部数据。

全外连接:

不仅包含1-6符合条件的行,还包含左右两侧的班级信息表及梅里号表中的其他不符合条件的全部数据。

四、交叉连接

我们来看一下示例就会清晰多了:

交叉连接不带where子句,返回的连接数是第一个表中符合查询条件的数据行数乘以第二个表中符合条件的数据行数,一下表格中第一表中7行数据,第二表中7行数据,那么交叉连接的查询数为7*7=49

问题一:

交叉的连接是按照什么方式连接的呢?

我们来看以下连个表后应该会清楚一些

 

即:以cross join右侧的表格为基数,逐步的一对多。

问题二:

加上where子句是什么样的呢?

与基本连接,与内连接的结果是一样的,因为查询的where关联条件是AB表中连接部分‘班级’的交叉数据,那不就是相同数据么。

五、自连接

自连接顾名思义:自己与自己连接,一对多,即同一个数据表的多表连接

'梅里号'表格数据:

自连接后是什么样的呢?

与同一个表格的交叉连接数据相同

六、思维导图

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/hL47QW1Y.shtml

相关文章

左连接、右连接、内连接、外连接简单说明

例如有两个表: test1: test2: 内连接:(inner join on)返回两个表的交集。 例如: select * from test1 a inner join test2 b on a.idb.id; 结果: 外连接:返回两个表的并集。(在此就不做截图…

MySQL之左外连接右外连接

外连接: 假设A和B表进行连接,使用外连接的话, AB两张表中有一张表是主表,一张表是副表,主要查询主表中的数据,捎带着查询副表, 当副表中的数据没有和主表中的数据匹配上,副表自动模…

秒懂sql中的左外连接

左外连接: 1.语法: SELECT 查询字段 FROM 查询表格(左表) LEFT JOIN 右表 ON 查询条件 2.左外连接查询的就是左表,那干嘛加个右表,岂不是没有作用: 区别在于左外连接是查询完左表后&…

sql的四种连接——左外连接、右外连接、内连接、全连接

一、内连接 满足条件的记录才会出现在结果集中。 二、 左外连接(left outer join,outer可省略) 左表全部出现在结果集中,若右表无对应记录,则相应字段为NULL 举例说明: 客户表: 订单表&#x…

数据库的内连接、外连接(左外连接、右外连接、全外连接)以及交叉连接

SQL数据库的连接:内连接、和外连接(左外连接、右外连接、和全连接) 本次实验在MySQL数据库中进行,数据库初始表如下: 一、内连接:结果仅包含符合连接条件的两表中的行。如下: 二、外连接&#…

oracle左外连接、右外连接、完全外连接以及(+)号用法

准备工作 oracle连接分为: 左外连接:左表不加限制,保留左表的数据,匹配右表,右表没有匹配到的行中的列显示为null。右外连接:右表不加限制,保留右表的数据。匹配左表,左表没有匹配到…

左连接,右链接

用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。 MySQL版本:Server version: 5.6.31 MySQL Community Server (…

全外连接、左外连接和右外连接区别(含举例)

全外连接是左外连接和右外连接的结合。 左外连接和右外连接的区别如下: 1、数据集合上的区别 (1)左外连接:是A与B的交集,然后连接A的所有数据。 (2)右外连接:是A与B的交集&#xff…

连接查询之外连接(左外链接和右外连接)

内连接: 假设A表和B表进行连接查询,使用内连接的话,凡是A表和B表能够匹配上的记录被查询出来,这就是内连接。A、B两张表没有主副之分,两张表是平等的。 外连接: 假设A表和B表进行连接查询,使用…

左连接、右连接、内连接、外连接

一.外连接 外连接分三类:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。 1.左外连接 左连接 left join 是left outer join的简写,left j…

左外连接和右外连接的含义及区别,举例说明

左连接的含义是限制表2中的数据必须满足连接条件,而不管表1中的数据是否满足连接条件,均输出表1的内容。 右连接的含义是限制表1中的数据必须满足连接条件,而不管表2中的数据是否满足连接条件,均输出表2的内容。 创建表格A1,B1,…

外连接(左连接和右连接)

介绍: 1.内连接:两张表没有主次关系;外连接:两张表产生了主次关系 2.带有right的是右外连接,又叫右连接;带有left的是左外连接,又叫左连接 3.任何一个左连接都有右连接的写法,任何…

图解MySQL 内连接、外连接、左连接、右连接、全连接……太多了

用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。 MySQL版本:Server version: 5.6.31 MySQL Community Server (…

使用Java生成二维码图片

下面我来分享两种生成二维码图片的方法。 第一种&#xff0c;填入你扫描二维码要跳转的网址直接生成二维码 第一步&#xff1a;导入相关的包 1 <dependency> 2 <groupId>com.google.zxing</groupId> 3 <artifactId>core</artifactId>…

java生成二维码工具

1&#xff0c;添加maven依赖 <!-- 生成二维码 --> <dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.4.1</version> </dependency> 2&#xff0c;微信支付宝图片 3&#x…

二维码是什么?java生成二维码

生成二维码的网站可用于测试&#xff1a;草料二维码 参考资料&#xff1a;二维码&#xff08;QR code&#xff09;基本结构及生成原理 二维码 &#xff08;2-dimensional bar code&#xff09;&#xff0c;是用某种特定的几何图形按一定规律在平面&#xff08;二维方向上&…

关于Java生成二维码(zxing)

使用zxing生成二维码 提示&#xff1a;需要自己添加执行zxing.jar包 操作:点击链接去下载zxing包。GitHub - zxing/zxing: ZXing ("Zebra Crossing") barcode scanning library for Java, Androidhttps://github.com/zxing/zxing/ 文章目录 前言一、zxing是什么&…

一步一步教你用 java 生成二维码

一步一步用java设计生成二维码 在物联网的时代&#xff0c;二维码是个很重要的东西了&#xff0c;现在无论什么东西都要搞个二维码标志&#xff0c;唯恐落伍&#xff0c;就差人没有用二维码识别了。也许有一天生分证或者户口本都会用二维码识别了。今天心血来潮&#xff0c;看见…

java生成二维码到文件,java生成二维码转成BASE64

java生成二维码到文件&#xff0c;java生成二维码转成BASE64 如题&#xff0c;利用java和第三方库&#xff0c;把指定的字符串生成二维码&#xff0c;并且把二维码保存成图片&#xff0c;转换成BASE64格式。 需要的jar文件&#xff1a; package com.xueyoucto.xueyou;import …

关于java生成二维码:QR Code

QR Code的生成和读取在两个文件&#xff1a; 生成&#xff1a;QRcode​​​​​qrcode encoder (cgi programs/libralies) , QRcode demo and document of how to createhttp://www.swetake.com/qrcode/index-e.html 读取&#xff1a; オープンソースのQRコードデコードライ…