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 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

在 Spring Boot 中连接 MySQL 数据库的详细步骤

《在SpringBoot中连接MySQL数据库的详细步骤》本文介绍了SpringBoot连接MySQL数据库的流程,添加依赖、配置连接信息、创建实体类与仓库接口,通过自动配置实现数据库操作,... 目录一、添加依赖二、配置数据库连接三、创建实体类四、创建仓库接口五、创建服务类六、创建控制器七、运行应用程序八

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.