Oracle内连接、左外连接、右外连接、全外连接小总结

2023-10-24 06:18

本文主要是介绍Oracle内连接、左外连接、右外连接、全外连接小总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


转载地址:http://liuzidong.iteye.com/blog/892319


转载:Oracle内连接、左外连接、右外连接、全外连接小总结 

数据库版本:Oracle 9i 

连接n个表,至少需要n-1个连接条件。例如:连接三个表,至少需要两个连接条件。 

表TESTA,TESTB,TESTC,各有A, B两列 

连接分为两种:内连接与外连接。 

A.内连接 

内连接,即最常见的等值连接,例: 

Sql代码   收藏代码
  1. SELECT *   
  2. FROM TESTA,TESTB  
  3. WHERE TESTA.A=TESTB.A   


B.外连接 

外连接分为左外连接,右外连接和全外连接。 

1.  左外连接 left outer join 或者 left join 

左外连接就是在等值连接的基础上加上主表中的未匹配数据,例: 

Sql代码   收藏代码
  1. SELECT *  
  2. FROM TESTA   
  3. LEFT OUTER JOIN TESTB   
  4. ON TESTA.A=TESTB.A   


Oracle 支持另一种写法 

Sql代码   收藏代码
  1. SELECT *   
  2. FROM TESTA,TESTB  
  3. WHERE TESTA.A=TESTB.A(+)   


三个表做左外连接 

Sql代码   收藏代码
  1. SELECT *  
  2. FROM TESTA   
  3. LEFT OUTER JOIN TESTB   
  4. ON TESTA.A=TESTB.A  
  5. LEFT OUTER JOIN TESTC  
  6. ON TESTA.A=TESTC.A   


Oracle 支持的另外一种写法 

Sql代码   收藏代码
  1. SELECT *  
  2. FROM TESTA,TESTB,TESTC  
  3. WHERE TESTA.A=TESTB.A(+)  
  4. AND TESTA.A=TESTC.A(+)  



2. 右外连接 right outer join 或者 right join 

右外连接是在等值连接的基础上加上被连接表的不匹配数据 

Sql代码   收藏代码
  1. SELECT *  
  2. FROM TESTA   
  3. RIGHT OUTER JOIN TESTB   
  4. ON TESTA.A=TESTB.A  


Oracle支持的另一种写法 

Sql代码   收藏代码
  1. SELECT *  
  2. FROM TESTA,TESTB  
  3. WHERE TESTA.A(+)=TESTB.A  


3.全外连接 full outer join 或者 full join 

全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上 

Sql代码   收藏代码
  1. SELECT *   
  2. FROM TESTA   
  3. FULL OUTER JOIN TESTB  
  4. ON TESTA.A=TESTB.A  


全外连接的等价写法,对同一表先做左连接,然后右连接 

Sql代码   收藏代码
  1. SELECT  TESTA.*,TESTB.*  
  2. FROM TESTA  
  3. LEFT OUTER JOIN TESTB  
  4. ON TESTA.A=TESTB.A  
  5. UNION  
  6. SELECT TESTA.*,TESTB.*  
  7. FROM TESTB  
  8. LEFT OUTER JOIN TESTA  
  9. ON TESTA.A=TESTB.A  


oracle中的各种连接(join):内连接、外连接、自然连接、自连接、交叉连接 

内连接(inner join)就是将根据检索条件将满足条件的数据选择出来,oracle首先用第一张表的第一条数据去扫描另一张表的所有数据,如果遇到符合条件的数据就加入到结果集中。直到检索完第二张表的所有数据。然后用第一张表的第二条数据,重复刚才的动作,直到以第一张的最后一条数据。其关键字是join,可以使用using关键字和on关键字。oracle中默认的连接是内连接。 

外连接(outer join)是根据需要将表中某些不符合选择条件的数据也列举出来,根据选择标准的不同分为左连接、右连接和满外连接。 

自然连接(natural join)是由oracle自行决定哪些列作为连接的条件。Oracle是这么确定的:将不同表中的那些具有相同名称和数据类型的字段用相等的条件连接起来。 

自连接(self join)中,Oracle将一个表的一个镜像当作另一个表,你可以像使用两个表一样使用这一个表。 

交叉连接(cross join)是两个表的笛卡尔积,即不做任何条件限制,他们的结果集的数据的条数是两个表的数据条数的乘积。 



在使用关键字JOIN进行不同的表连接时:-》使用USING子句指定等值连接中需要用到的列; 

                                    -》使用ON子句指定额外的连接条件; 

                                    -》使用AND增加连接条件;

这篇关于Oracle内连接、左外连接、右外连接、全外连接小总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/273250

相关文章

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

Spring Boot实现多数据源连接和切换的解决方案

《SpringBoot实现多数据源连接和切换的解决方案》文章介绍了在SpringBoot中实现多数据源连接和切换的几种方案,并详细描述了一个使用AbstractRoutingDataSource的实... 目录前言一、多数据源配置与切换方案二、实现步骤总结前言在 Spring Boot 中实现多数据源连接

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停