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

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

【Altium】查找PCB上未连接的网络

【更多软件使用问题请点击亿道电子官方网站】 1、文档目标: PCB设计后期检查中找出没有连接的网络 应用场景:PCB设计后期,需要检查是否所有网络都已连接布线。虽然未连接的网络会有飞线显示,但是由于布线后期整板布线密度较高,虚连,断连的网络用肉眼难以轻易发现。用DRC检查也可以找出未连接的网络,如果PCB中DRC问题较多,查找起来就不是很方便。使用PCB Filter面板来达成目的相比DRC

Java面试题:通过实例说明内连接、左外连接和右外连接的区别

在 SQL 中,连接(JOIN)用于在多个表之间组合行。最常用的连接类型是内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。它们的主要区别在于它们如何处理表之间的匹配和不匹配行。下面是每种连接的详细说明和示例。 表示例 假设有两个表:Customers 和 Orders。 Customers CustomerIDCus

十五.各设计模式总结与对比

1.各设计模式总结与对比 1.1.课程目标 1、 简要分析GoF 23种设计模式和设计原则,做整体认知。 2、 剖析Spirng的编程思想,启发思维,为之后深入学习Spring做铺垫。 3、 了解各设计模式之间的关联,解决设计模式混淆的问题。 1.2.内容定位 1、 掌握设计模式的"道" ,而不只是"术" 2、 道可道非常道,滴水石穿非一日之功,做好长期修炼的准备。 3、 不要为了

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

Java注解详细总结

什么是注解?         Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。         注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。 自定义注解  现在我们自定义一个MyTest注解 public @interface MyTest{String aaa();boolean bbb()

tensorboard-----summary用法总结

Tensorflow学习笔记——Summary用法         最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。 而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在

七种排序方式总结

/*2018.01.23*A:YUAN*T:其中排序算法:冒泡排序,简单排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序*/#include <stdio.h>#include <math.h>#include <malloc.h>#define MAXSIZE 10000#define FALSE 0#define TRUE 1typedef struct {i

神经网络第一篇:激活函数是连接感知机和神经网络的桥梁

前面发布的文章介绍了感知机,了解了感知机可以通过叠加层表示复杂的函数。遗憾的是,设定合适的、能符合预期的输入与输出的权重,是由人工进行的。从本章开始,将进入神经网络的学习,首先介绍激活函数,因为它是连接感知机和神经网络的桥梁。如果读者认知阅读了本专题知识,相信你必有收获。 感知机数学表达式的简化 前面我们介绍了用感知机接收两个输入信号的数学表示如下: