SQL中的连接(左、右、内连接)

article/2025/7/27 9:22:33

目录

左连接(LEFT JOIN或LEFT OUTER JOIN):

 右连接(RIGHT JOIN或RIGHT OUTER JOIN):

内连接(INNER JOIN也叫等值连接):

全连接(FULL JOIN):


SQL中的连接主要是将两张表中的数据进行拼接,然后通过语句中的筛选条件进行筛选。

在连接中,无论哪种连接方式,from后边的第一个表名就是主表,主表在连接查询的结果中的字段始终在左边。

现在有两张表,表一有7条数据(id从1到7),表二有8条数据(id为1到9,除去7)

左连接(LEFT JOIN或LEFT OUTER JOIN):

按照左边的数据条数建立连接,左边的每条数据都会去连接右边表的每条数据,最后得到的数据条数就是7*8=56条:

select * FROM product a LEFT JOIN resource b on TRUE

 如果加上筛选条件,查找出连接后两边id相等的数据,将会查出7条,上边的例子也讲到了,左连接中,左表的每一条数据都会去连接右边表的每条数据,但是第7条只有表一的数据,表二的数据全部为空,因为表二中没有id为7的数据。

select * FROM product a LEFT JOIN resource b ON a.id = b.id

加上筛选条件就可以查找出左表(a表)独有的:

select * FROM product a LEFT JOIN resource b ON a.id = b.id where b.id is null

同理,将表二作为主表进行左连接按照id相等的条件进行查找,最后查找到的数据数是8条:

select * FROM resource b LEFT JOIN product a ON a.id = b.id

需要注意的是,下面语句默认就是左连接:

SELECT * FROM product a JOIN resource b ON a.id = b.id 

 右连接(RIGHT JOIN或RIGHT OUTER JOIN):

按照右边的数据条数建立连接,右边的每条数据都会去连接左边表的每条数据,最后得到的数据条数就是8*7=56条:

SELECT * FROM product a RIGHT JOIN resource b ON TRUE

如果加上筛选条件,查找出连接后两边id相等的数据,将会查出8条,右表的每一条数据都会去连接左边表的每条数据,但是第8条和第9条只有表二的数据,表一的数据全部为空,因为表一中没有id为8和9的数据。

SELECT * FROM product a RIGHT JOIN resource b ON a.id = b.id 

 加上筛选条件就可以查找出右表(b表)独有的:

SELECT * FROM product a RIGHT JOIN resource b ON a.id = b.id where a.id is null 

 拓展:并集去交集:两表关联,取并集然后去交集。

select * FROM product a LEFT JOIN resource b ON a.id = b.id where b.id is null 
union
SELECT * FROM product a RIGHT JOIN resource b ON a.id = b.id where a.id is null 

内连接(INNER JOIN也叫等值连接):

只有两张表中有相同id的数据才会被查找出来,不会出现左连接和右连接中的一个数据条部分数据为空的现象:

SELECT * FROM product a INNER JOIN resource b ON a.id = b.id

全连接(FULL JOIN):

两表关联,查询它们的所有记录:

mysql数据库中不支持full join … on …的写法,但是在Oracle数据库可以这样使用

select a.* FROM(selecttable1.*,table2.*from table1 left JOIN table2 on table1.id=table2 .tid <-- 用左外连接 -->UNION <-- 通过UNION来链接 -->selecttable1.*,table2.*from table1 right JOIN table2 on table1.id=table2 .tid) as a <-- 用右外连接 -->wherea.id = #{id} <-- 如果要根据条件查询,必须要把上面括号里的当做子查询,条件必须写在外面 -->ORDER BY id <-- 其它操作跟在后面 -->

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

相关文章

SQL内连接,左连接,右连接区别及联系

目录 数据库建表及其内容 内连接&#xff08;默认连接&#xff09; 左连接 右连接 总结&#xff1a; 数据库建表及其内容 stu表 班级表&#xff08;class&#xff09; 内连接&#xff08;默认连接&#xff09; SELECT stu.stuname , classname FROM class INNER JOIN stu…

SQL中左连接和右连接的理解误区

SQL中左连接和右连接的理解误区&#xff1a; 1.左右外连接中&#xff0c;怎么区分哪个表当左表&#xff0c;哪个表当右表&#xff1f; 2.什么时候用左连接&#xff0c;什么时候用右连接&#xff1f; 首先&#xff0c;重新捋一遍二者概念&#xff1a; 左连接的语法&#xff…

SQL语句什么是左连接、右连接、内连接?

1、左连接 以左表为基础&#xff0c;根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出&#xff0c;而右表只列出ON后条件与左表满足的部分。 左表&#xff08;table1&#xff09;全部保留&#xff0c;右表&#xff08;table2&#xff09;关联不上用n…

sql的左连接,右连接,内连接

环境&#xff1a; SQL工具&#xff08;如Navicat&#xff0c;SQLyog&#xff09; MySQL驱动 全局总结&#xff1a; 左连接:关注左边&#xff0c;右边没有就为空。右连接:关注右边&#xff0c;左边没有就为空。内连接:返回交集 必备&#xff1a; 两张或多张表格 一&#x…

Linux系统之iostat命令的基本使用

Linux系统之iostat命令的基本使用 一、iostat命令介绍二、iostat命令帮助1.1 iostat的帮助信息1.2 iostat的选项解释 三、iostat命令的基本使用3.1 查看iostat工具版本3.2 直接使用iostat命令3.3 间隔5秒查看3次信息3.4 只查看磁盘状态3.5 以k或M为单位显示信息 四、查看磁盘I/…

Linux实时监控iostat命令详解

概述&#xff1a; iostat 主要用于输出CPU和磁盘I/O相关的统计信息。 格式&#xff1a; iostat [选项] [<时间间隔>] [<次数>] 如图 参数&#xff1a; -c 显示CPU使用情况 -d 显示磁盘使用情况 -N 显示磁盘阵列(LVM) 信息 -n 显示NFS 使用情况 -k 以 KB 为单位显…

服务器 iostat命令详解

iostat是I/O statistics&#xff08;输入/输出统计&#xff09;的缩写&#xff0c;iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况&#xff0c;同时也会汇报出CPU使用情况。iostat也有一个弱点&#xff0c;就是它不能对某个进程进行深入分析&#…

Linux中iostat命令参数详解

iostat主要用于监控系统设备的IO负载情况&#xff0c;iostat首次运行时显示自系统启动开始的各项统计信息&#xff0c;之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以根据需求指定相应的次数和时间。 一、使用iostat 1命令&#xff1a; 各参数含义 Device:部…

转:linux iostat命令详解

转过来学习学习。 Linux系统中的 iostat是I/O statistics&#xff08;输入/输出统计&#xff09;的缩写&#xff0c;iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况&#xff0c;同时也会汇报出CPU使用情况。同vmstat一样&#xff0c;iostat也有一个…

iostat linux,centos安装iostat命令的方法详解

在centos系统中,可以使用yum命令安装iostat。 开始,想当然地运行命令: 复制代码 代码示例: #yum install iostat 出现如下图所示的提示: 经搜索后,知道使用yum安装iostat,需要安装的其实是sysstat。 例如: 复制代码 代码示例: #yum install sysstat 出现如下图所示的安装…

iostat 命令详解(二)

iostat 命令详解(二) iostat常用命令如下: 1,iostat 2,iostat -xk 1 1 3,iostat -dk 1 1 查看吞吐量 总结:

Linux中iostat含义,linux下iostat命令详解

iostat语法 用法&#xff1a;iostat [ 选项 ] [ [ ]] 常用选项说明&#xff1a; -c&#xff1a;只显示系统CPU统计信息&#xff0c;即单独输出avg-cpu结果&#xff0c;不包括device结果 -d&#xff1a;单独输出Device结果&#xff0c;不包括cpu结果 -k/-m&#xff1a;输出结果以…

iostat命令详解——linux性能分析

之前总结uptime和free命令&#xff0c;今天继续来总结一下iostat。给自己留个笔记&#xff0c;同时也希望对大家有用。 版本信息&#xff1a; sysstat version 9.0.4 (C) Sebastien Godard (sysstat <at> orange.fr) 基本使用&#xff1a; iostat [ -c ] [ …

Linux 性能分析之iostat命令详解

Linux 性能分析之iostat命令详解 iostat命令是IO性能分析的常用工具&#xff0c;其是input/output statistics的缩写。本文将着重于下面几个方面介绍iostat命令&#xff1a; iostat的安装iostat命令行选项说明iostat输出内容分析如何确定磁盘IO的瓶颈iostat实际案例 命令的安…

Linux命令---iostat命令详解

简介 iostat主要用于监控系统设备的IO负载情况&#xff0c;iostat首次运行时显示自系统启动开始的各项统计信息&#xff0c;之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 语法 iostat [ -c ] [ -d ] [ -h ] […

iostat命令安装及详解

iostat linux系统出现了性能问题&#xff0c;一般我们可以通过top、iostat、free、vmstat等命令 来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 iostat 由 Red Hat Enterprise Linux AS 发布。同时 iostat 也是 Sysstat 的一部分。所以我们安装要安装syss…

iostat命令详解指标分析

Iostat iostat命令用于监视系统CPU和I/O设备负载 常用方法&#xff1a; iostat -x 1 12 检测系统的io状态&#xff0c;每一秒刷新一次&#xff0c;一共刷新12次 -x该选项显示和io相关的扩展数据 还可以使用-k或者-m选项以按照kb或MB显示单位 不足之处&#xff1a;iostat…

I/O查看--iostat命令详解

文章目录 一.iostat概述二.iostat命令参数三.示例 一.iostat概述 iostat 主要用于输出磁盘IO 和 CPU的统计信息。 iostat属于sysstat软件包。可以用yum install sysstat 直接安装。 cpu属性值说明 参数描述avg-cpucpu平局值%userCPU处在用户模式下的时间百分比%niceCPU处在带…

iostat 命令详解(一)

iostat 命令详解&#xff08;一&#xff09; 原文地址https://www.jianshu.com/p/5fed8be1b6e8 概述 iostat 主要用于输出磁盘IO 和 CPU的统计信息。 iostat属于sysstat软件包。可以用yum install sysstat 直接安装。 iostat 用法 用法&#xff1a;iostat [选项] [<时…

Linux iostat命令详解

Linux iostat命令详解 iostat主要用于监控系统设备的IO负载情况&#xff0c;根据这个可以看出当前系统的写入量和读取量&#xff0c;CPU负载和磁盘负载。 1&#xff0e;命令格式&#xff1a; iostat 参数 时间 次数 2&#xff0e;命令参数&#xff1a; -C 显示CPU使用情况 -d 显…