oracle内连接和外连接

article/2025/9/26 3:51:57

一、表的连接

1.内连接 (inner join)

做内连接得到的是a和b的关联关系的列同时存在的进行连接,内连后a和b关联列相同的a中数据和b中数据合在一起形成新的表数据。
在这里插入图片描述

内连接只有满足条件的数据才会显示

-- a 表和 b 表做内连接
-- a 表中的 bNO 和 b 表中的 NO 都不为 null 且a.bNo=b.NO 组成一条新数据。
SELECT * FROM a INNER JOIN b ON(a.bNO=b.NO);

等值连接也属于内连接

SELECT * FROM a, b WHERE a.nNO=b.NO;

2.外连接

2.1 左外连接(left outer join:简写为 left join)

左外连接是 a 表中的所有行都会显示,b表 中的对应数据添加在 a 表中的对应数据后面形成新的表数据。
在这里插入图片描述

-- a 表和 b 表做左连接
-- a 表中的所有列都会有,b 表中只有和 a 表中关联的数据才会跟在 a 表对应数据后面
SELECT * FROM a LEFT JOIN b ON(a.bNO=b.NO);

在 oracle 中左连接的另一种写法:

SELECT * FROM a, b WHERE a.bNO = b.NO(+);

2.2 右外连接(right outer join :简写为 right join)

右外连接与左外连接刚好相反, b表中的所有行都会显示,a 表 中的对应数据添加在 b 表中的对应数据后面形成新的表数据。
在这里插入图片描述

-- a 表和 b 表做右连接
-- b 表中的所有列都会有,a 表中只有和 b 表中关联的数据才会跟在 b 表对应数据后面
SELECT * FROM a RIGHT JOIN b ON(a.bNO=b.NO);

在 oracle 中右连接的另一种写法

SELECT * FROM a, b WHERE a.bNo(+) = b.NO;

2.3 全外连接(full outer join:简写为 full join)

a 表和 b 表中的数据都会显示
在这里插入图片描述

-- a 表和 b 表做全连接
-- a 表和 b 表中的数据都会显示
SELECT * FROM a FULL JOIN b ON(a.bNO=b.NO);

3、数据集合操作

3.1 union 和 union all (并集操作)

union 和 union all 都是将多个 select 查询得到的集合进行并集操作。

使用前提:

要使用 union 或者 union all 进行合并的多个 select 查询到的集合字段个数必须要一致,对应的字段类型也要一致。

二者的区别:

union 对合并后的结果进行了去重,union all 只是进行了合并,并没有对合并后的集合进行去重;
union 会将合并后的集合根据字段的顺序进行默认排序,union all 并不会进行排序;

注:

union 的效率比 union all 的效率低,所以,如果要对合并后的集合去重就使用 union,不进行去重操作就使用 union all;

--union:得到的结果只有前一半的 select 语句的值(进行了去重操作,并且还进行了默认的排序)
SELECT * FROM a UNION SELECT * FROM b;
--union all:得到的结果是两个select 语句合并在一起的集合(没有进行去重操作且没有进行排序)
SELECT * FROM a UNION ALL SELECT * FROM b;

3.2 intersect (交集操作)

intersect 操作是将多个 select 查询得到的集合进行交集操作

-- intersect:得到的是两个 select 语句的公共部分(即交集部分)
SELECT * FROM a INTERSECT SELECT * FROM b;

3.3 minus (差集操作)

minus 操作是将多个 select 插叙得到的差集进行交集操作

-- minus:得到的是前一个 select查询出来有并且后一个 select 没有的
SELECT * FROM a MINUS SELECT * FROM b;

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

相关文章

mysql内外三种连接,Mysql的内外连接方式

Mysql有很多种连接方式,其中有两大主要连接方式:内连接和外连接,其中外连接又可以分为左外连接和右外连接; 对于这三种连接方式,如何判断何时使用一直困扰着我,这里就做一下自己的总结: 1、内连…

SQL内连接

开发工具与关键技术: sql 撰写时间:2022/3/27 内连接(可多个表连接):两表合并为1表 内连接格式1: select 字段 from 表1,表2 where 连接条件 或者 : select 字段 from 表1…

MySql 内连接

三.内连接 内链接:两张或者多张表中按给定的连接条件查询满足条件的结果 -- 1.语法: select 查询内容 -- from table1,table2 where 关联条件 列如: 查询雇员信息级雇员所在部门信息 select * from emp,dept where emp.deptnodept.deptno 使用别名: 列如…

mysql内连接

文章目录 多表连接一、内连接初识(内连接两张表)二、内连接多张表三、为表起别名 题型综合 多表连接 多表连接的基础,要连接的表必须具有相同意义的字段(有关系的表); 多表连接什么时候用:顾名…

ClickHouse内连接

A内连接B>S2区域 SELECT date, ts, country, province, city,ye_no FROM (SELECT date, ts, country, province, city,0 AS yes_no FROM DBa.tba WHERE (date today()-1) ) ALL INNER JOIN (SELECT date, ts, country, province, city FROM DBb.tbb WHERE (date tod…

内连接,左连接,右连接作用及区别(数据库相关九)

我们来看个例子: 内连接就是普通的查询,例如 1.加inner join的: SELECT S.SName,C.CourseID,C.Grade From Sc AS C INNER JOIN Students AS S ON C.StudentID S.SNo 2.不加inner join的 SELECT Students.SName,…

知识点 左连接、右连接、内连接

为什么使用 这些X连接? 答:因为 我们想看到更多维度的数据,原本这些数据其实应该在一个表的,但为了避免数据冗余、面向对象(一张表一般对应一个实体类)等因素,我们把这些数据根据某个规则进行拆…

inner join 和outer join

内连接(INNER JOIN) 内连接也称为等同连接,返回的结果集是两个表中所有相匹配的数据,而舍弃不匹配的数据。也就是说,在这种查询中,DBMS只返回来自源表中的相关的行,即查询的结果表包含的两源表…

SQL连接表(内连接、左连接、右连接、交叉连接、全外连接)

分享一些自己的连表总结 什么是连接表? 多表查询原理:将多个表通过笛卡尔积形成一个虚表,再根据查询条件筛选符合条件的数据。 在关系数据库中,数据分布在多个逻辑表中。 要获得完整有意义的数据集,需要使用连接来查询…

内连接与外连接(全网最详细)

目录 前言 一、内连接 二、外连接 1.左外连接 2.右外连接 3.满外连接 三、UNION的使用 四、7种SQL JOINS的实现 前言 在学习内连接与外连接之前,你不妨思考为什么要引入这两种连接方式,带着问题去学习,更有助于我们对知识的学习。 其…

LDF explorer使用问题记录

本文章并不是使用教程! 问题1:信号必须要设置“Unit”值 当信号时枚举值或其他非物理信号,我们不为其设置Unit属性时,通过NCF工具生成源文件时,会报错,如下图所示: 通过文本方式打开ldf文件…

SqlServer如何导入mdf、ldf文件

1、sqlserver数据库中可以直接拷贝mdf和ldf文件对sqlserver数据库中的数据进行备份,然后通过数据库管理软件加载mdf和ldf文件加载数据库数据。 2、如果拷贝mdf和ldf文件失败时可以先在服务中停止SQL Server(MSSQLSERVER)服务 3、如下两种方法亲证都可行 第一种方法…

SqlServer2008Ldf文件过大处理

ldf文件是数据库的操作日志文件,用于数据库的数据恢复; 缩小体积的方法: 第一步:设置数据库成简单模式,在master下执行 ALTER DATABASE databasename SET RECOVERY SIMPLE; 第二步:缩小数据库体积到1024MB …

SqlServer怎么导入mdf、ldf文件

第一种方法: 1.打开SQL Server,写好登录名和密码点击连接. 2.打开数据库,右键某一个数据库,选择“新建查询(Q)”。 3.再代码界面输入如下代码,点击F5键或者点击运行按钮即可。 代码如下: EXEC…

sql server处理/压缩LDF文件

LDF/MDF文件太大了,要压缩处理 SELECT NAME, recovery_model_desc FROM sys.databases 查看是什么模式这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询 USE DNName GO SELECT file_id, nameFROM s…

服务器mdf ldf文件,sqlserver2008如何导入mdf,ldf文件

网上找了很多解决sql server导入其他电脑拷过来的mdf文件,多数是不全,遇到的解决方法不一样等问题,下边是找到的解决问题的最全面方法! 将mdf, ldf文件导入到sql server 2008数据库当中,下面提供两种办法: …

ldf文件怎么储存到mysql中_sqlserver数据库的ldf文件太大,我们如何压缩ldf日志文件...

使用sqlserver数据库的数据有两个文件,分别是mdf和ldf。 mdf是数据文件,另外一个ldf为日志文件。随着网站的运行,你会发现ldf这个文件会越来越大,我们如何压缩ldf日志文件。 网上有很多收缩ldf文件的方法,但比较杂乱&a…

SQLServer数据库丢失ldf文件的恢复

某个数据库例如CXPT2,只把CXPT2.mdf文件留下来了,ldf文件没有留下来, 启动的时候显示显示 CXPT2[可疑],不知道怎么解决,这时候CXPT2.mdf目录下有一个旧的ldf文件, 后来看了网上的帖子,就把ldf…

mdf ldf 导入 mysql_mdf, ldf文件导入到sql server 2005的方法

在实际的工作中, 有很多涉及到数据库资料的备份,转移, 恢复等方面的工作, 但是并不是所有的资料都是以.bak格式存在的, 比如说, 你想从正在运行的数据库中把mdf, ldf格式的文件导出来,而在正在运行的数据库中则不能进行这样的操作, 同样, 当你已经拥有了mdf, ldf这样的文件想导…

LDF转Excel;LDF转位定义;Excel转LDF;Excel转位定义;MatrixCreat(四)之工具使用

工具使用 一、摘要1.描述2.关键字 二、什么时候需要使用MatrixCreat工具三、MatrixCreat转换后效果图四、MatrixCreat运行环境五、MatrixCreat使用介绍六、MatrixCreat配置详解1.ProjectName2.EndianType3.BitsName4.SheetName5.ParasRowNum6.VariableNameLenth7.NameIsEqual8.…