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

相关文章

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

java连接opcua的常见问题及解决方法

《java连接opcua的常见问题及解决方法》本文将使用EclipseMilo作为示例库,演示如何在Java中使用匿名、用户名密码以及证书加密三种方式连接到OPCUA服务器,若需要使用其他SDK,原理... 目录一、前言二、准备工作三、匿名方式连接3.1 匿名方式简介3.2 示例代码四、用户名密码方式连接4

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我