`
xm_koma
  • 浏览: 383461 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle中的连接查询

阅读更多
--创建数据表以及添加测试数据
create table TEST_A(ID NUMBER not null)
create table TEST_B(ID NUMBER not null)
insert into TEST_A values(1);  
insert into TEST_A values(2);  
insert into TEST_A values(3);  
insert into TEST_B values(1);  
insert into TEST_B values(2);  
insert into TEST_B values(4);  
commit; 

 

数据表的连接有: 
1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 

 

select * from test_a a ,test_b b where a.id=b.id

 
2、外连接: 包括 
(1)左外连接(左边的表不加限制,即以左边的表为主表) 

  主流关系型数据库用法:a left join b on ...

select * from test_a a left join test_b b on a.id=b.id;

 

  oracle中还可以用(+),(+)放在“=”号的右边;

 

select * from test_a a ,test_b b where a.id=b.id(+)

 

   查询结果如下:

 

(2)右外连接(右边的表不加限制,即以右边的表为主表) 

  主流关系型数据库用法:a right join b on ...

select * from test_a a right join test_b b on a.id=b.id;

 

  oracle中还可以用(+),(+)放在“=”号左边;

select * from test_a a ,test_b b where a.id(+)=b.id;

  

查询结果如下:

 


(3)全外连接(左右两表都不加限制) 

  主流关系型数据库用法:a full join b on ...

select * from test_a a full join test_b b on a.id=b.id;

 

  oracle中还可以用两个带(+)的查询结果的union

select * from test_a a,test_b b where a.id(+)=b.id 
union 
select * from test_a a,test_b b where a.id=b.id(+);

  

查询结果如下:

 


4、交叉连接,也加完全连接或者笛卡尔积

主流关系型数据库用法:a cross join b

 

select * from test_a,test_b;

 或者

 

 
select * from test_a cross join test_b;

 

查询结果如下:

 

 

 5、自然连接

虽然natural join(自然连接)实际上的用的比较少,但实际上这个连接是非常有用的,若能经常使用一下,实际上是非常方便的。

自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果。

 

给上述两张表分别加上name1,name2字段,方便更好的理解自然连接。

ALTER TABLE test_a ADD name1  varchar2(32) ;

ALTER TABLE test_b ADD name2  varchar2(32) ;

 

并且增加相应的值。

 

执行下面的代码:

select a.name1,b.name2 from test_a a natural join test_b b;

 

查询结果如下:



这里我们并没有指定连接的条件,实际上oracle为我们自作主张的将test_a表中的id和test_b表中的id做了连接。也就是实际上相当于:

select a.name1,b.name2 from test_a a join test_b b on a.id=b.id;

 因为这两张表的这两个字段id的类型个名称完全相同,所以使用natural join时被自然的连接在一起了。

 

另外:

1.如果做自然连接的两个表的有多个字段都满足有相同名称个类型,那么他们会被作为自然连接的条件。

2.如果自然连接的两个表仅是字段名称相同,但数据类型不同,那么将会返回一个错误。

3.由于oracle中可以进行这种非常简单的natural join,我们在设计表时,应该尽量在不同表中具有相同含义的字段使用相同的名字和数据类型,以方便以后使用natural join。

 

 

ps:

注意以下两种情况:

1、

select * from test_a a,test_b b where a.id=b.id(+) and b.id=2;

 

查询结果如下:

 

 

2、

select * from test_a a,test_b b where a.id=b.id(+) and b.id(+)=2;

 

查询结果如下:


 

 

 

 

 

  • 大小: 2.4 KB
  • 大小: 1.5 KB
  • 大小: 1.7 KB
  • 大小: 2.2 KB
分享到:
评论

相关推荐

    关于Oracle多表连接,提高效率,性能优化操作

    这是因为ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询..数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性...

    oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法

    您可能感兴趣的文章:常用的Oracle doc命令(收藏)Oracle 多行记录合并/连接/聚合字符串的几种方法Oracle中字符串连接的实现方法php连接oracle数据库及查询数据的方法plsql连接oracle数据库报ora 12154错

    Oracle左连接返回多条记录中一条记录的查询语句

    Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录

    Java使用Jdbc连接Oracle执行简单查询操作示例

    Java使用Jdbc连接Oracle执行简单查询操作示例 Java使用Jdbc连接Oracle执行简单查询操作,是指使用Java语言通过Jdbc(Java Database Connectivity)连接Oracle数据库并执行简单查询操作的过程。本文将通过实例形式...

    oracle连接查询SQL性能测试

    标题“Oracle连接查询SQL性能测试”涉及的是数据库管理和优化领域,特别是针对Oracle数据库系统的SQL查询性能分析。在Oracle中,连接查询(JOINs)是整合多个表数据的关键操作,其性能直接影响到数据库的整体效率。...

    oracle客户端连接远程服务器

    标题中提到的“Oracle客户端连接远程服务器”,是指使用Oracle数据库客户端软件来建立与远程Oracle数据库服务器的连接。Oracle数据库是一种广泛使用的商业数据库系统,它支持多用户并发访问并保证数据的一致性,适用...

    C#连接Oracle数据库(查询数据)

    C#连接Oracle数据库(查询数据)方法,好东西,分享一下

    强制释放Oracle数据连接方案

    ### 强制释放Oracle数据连接方案 在日常的数据库管理工作中,我们经常遇到数据库连接超限的情况,这通常是由于大量的数据库连接未被正确关闭或回收所导致的。本文将详细介绍如何查看并调整Oracle数据库的连接数量...

    oracle数据库连接工具

    oracle数据库连接工具:toad oracle 11

    易语言oracle数据库连接模块源码

    在易语言中,开发Oracle数据库连接模块是为了实现对Oracle数据库的高效、便捷操作。Oracle数据库是全球广泛使用的大型关系型数据库管理系统,适用于处理大量数据和并发事务。 Oracle数据库连接模块的核心在于如何...

    Oracle Spatial与ArcGIS连接

    本文旨在探讨ArcGIS与Oracle Spatial之间的直接连接方法,并讨论在此过程中遇到的问题及其解决方案。 #### 二、ArcGIS与Oracle Spatial直接连接概述 **2.1 直接连接的意义** 直接连接(Direct Connect)是指ArcGIS...

    geoserver2.14.0 oracle 数据库连接

    在GIS(地理信息系统)领域,GeoServer是一款广泛使用的开源服务器软件,它...记住,安全性和性能优化也是在实际操作中需要考虑的重要因素,例如定期更新JDBC驱动,合理配置数据库连接池,以及根据需要调整查询性能。

    Oracle 多表查询优化

    Oracle 多表查询优化是指在 Oracle 数据库管理系统中,为了提高多表查询的效率和性能采取的一些优化策略和技术。在 Oracle 中,多表查询是指从多个表中检索数据的操作。这种操作可能会占用大量的系统资源和时间,...

    Oracle客户端连接Oracle服务器.docx

    Oracle客户端连接Oracle服务器是数据库管理中的基础操作,主要包括配置本地Net服务名、使用SQL*Plus和TOAD工具进行连接。以下是对这些知识点的详细说明: 1. **配置本地Net服务名**: - Net服务名配置是Oracle...

    C#中连接oracle连接方法

    本篇将详细介绍C#中连接Oracle数据库的方法,包括所需的组件、连接字符串的构建以及使用ADO.NET进行数据操作的基本步骤。 首先,你需要在你的项目中引入Oracle客户端库。Oracle提供了一个名为ODP.NET(Oracle Data ...

    Java连接oracle数据库实现成绩查询

    总的来说,这个Java连接Oracle数据库实现成绩查询的课程设计涵盖了数据库设计、JDBC编程、面向对象设计、权限控制等多个IT领域的知识,是学习和实践数据库应用开发的良好实例。通过这个项目,开发者不仅能提升数据库...

    oracle连接需要的驱动

    标题提到的"oracle连接需要的驱动"指的是Oracle JDBC驱动,它允许Java应用程序通过JDBC(Java Database Connectivity)接口与Oracle数据库进行通信。 Oracle JDBC驱动主要有四种类型: 1. ** Thin Driver (jdbc:...

    通过VB来连接oracle数据库做查询

    首先,要连接Oracle数据库,我们需要在VB中引入Oracle的数据库访问组件,通常是Oracle Data Provider for .NET (ODP.NET)。这个组件允许VB应用程序直接与Oracle服务器通信。安装ODP.NET后,在VB项目中添加引用,通常...

    易语言连接Oracle数据库

    在"oracle连接.e"这个文件中,很可能是包含了一个使用易语言编写的示例程序,演示了如何配置和使用上述组件来实现数据库的连接和数据操作。通过学习和理解这个示例,开发者可以快速掌握易语言与Oracle数据库的交互...

Global site tag (gtag.js) - Google Analytics