`

转载:Oracle左右全连接总结

 
阅读更多

转载自:http://wanglei8.iteye.com/blog/453835

--建立测试数据
create table a(id number);
create table b(id number);
insert into a values(1);
insert into a values(2);
insert into a values(3);
insert into b values(1);
insert into b values(2);
insert into b values(4);
commit;

--左:
--主流数据库通用的方法
select * from a left join b on a.id=b.id;
--Oracle特有的方法
select * from a, b where a.id=b.id(+);

        ID         ID
---------- ----------
         1          1
         2          2
         3 


--右:
--主流数据库通用的方法
select * from a right join b on a.id=b.id;
--Oracle特有的方法
select * from a, b where a.id(+)=b.id;

        ID         ID
---------- ----------
         1          1
         2          2
                    4
         
         
--内
--主流数据库通用的方法
select * from a join b on a.id=b.id;
--where关联
select * from a, b where a.id=b.id;

        ID         ID
---------- ----------
         1          1
         2          2
         
         
--全外
--主流数据库通用的方法
select * from a full join b on a.id=b.id;
--Oracle特有的方法
select *
  from a, b
 where a.id = b.id(+)
union
select * 
  from a, b 
 where a.id(+) = b.id;

        ID         ID
---------- ----------
         1          1
         2          2
         3 
                    4


--完全,也叫交叉连接或者笛卡尔积
--主流数据库通用的方法
select * from a,b;
--或者
select * from a cross join b;

        ID         ID
---------- ----------
         1          1
         1          2
         1          4
         2          1
         2          2
         2          4
         3          1
         3          2
         3          4


连接无非是这几个
--内连接和where相同
inner join
--左向外连接,返回左边表所有符合条件的
left join
--右向外连接,返回右边表所有符合条件的
right join
--完整外部连接,左向外连接和右向外连接的合集
full join
--交叉连接,也称笛卡儿积。返回左表中的每一行与右表中所有行的组合
cross join


--补充:
--左向外连接,返回左边表所有符合条件的,
--注意这里没有第二个加号,会直接过滤掉数据,只显示符合条件的记录
select * 
  from a, b
 where a.id = b.id(+)
   and b.id = 2;
   
        ID         ID
---------- ----------
         2          2   
         
         
--左向外连接,返回左边表所有符合条件的
--注意where上第二个加号,它的作用是修改右边表记录的显示,例如如果b.id(+) = 2,显示为2,否则显示null
select *
  from a, b
 where a.id = b.id(+)
   and b.id(+) = 2;

        ID         ID
---------- ----------
         2          2
         3 
         1    
         

 

 

分享到:
评论

相关推荐

    DBD::Oracle

    1. **连接管理**:DBD::Oracle 提供了连接到Oracle服务器的功能,允许Perl脚本创建、管理和关闭数据库会话。通过DBI的connect方法,可以指定数据库连接参数,如数据库名、用户名、密码和连接字符串。 2. **SQL执行*...

    转载:Oracle通用连接(Generic Connectivity)Postgresql

    ### Oracle通用连接(Generic Connectivity)与PostgreSQL集成详解 #### 一、引言 在数据库领域,Oracle通用连接(Generic Connectivity)提供了一种强大的机制,允许Oracle数据库通过标准的ODBC或OLE DB接口来访问...

    Toad for Oracle:Oracle数据库连接与配置教程.docx

    Toad for Oracle:Oracle数据库连接与配置教程.docx

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

    错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...

    成功之路:Oracle11g学习笔记.pdf

    《成功之路:Oracle 11g学习笔记》共24章,主要介绍了Oracle安装、干净卸载Oracle、数据库启动关闭、Oracle网络配置等相关内容。在介绍Oracle系统管理的知识以后,将介绍与开发相关的内容(如PL/SQL基础知识、存储过程...

    perl oracle dbd zip

    总结起来,这个“perl oracle dbd zip”资源包包含的内容可能包括DBD::Oracle模块的源代码、与Oracle数据库交互的Perl脚本示例、可能的配置或测试工具,以及一个Perl专用的编辑器。对于任何希望使用Perl处理Oracle...

    Oracle四大宝典之一:Oracle Sql基础 中文版

    第三章 ORACLE SQL 单行函数 第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户...

    C#中oracle连接数据库的封装类

    在C#编程环境中,Oracle数据库的连接和操作通常需要通过ADO.NET或者其他第三方库来实现。在本场景中,我们关注的是一个名为"C#中oracle连接数据库的封装类"的主题,这个主题涉及到创建一个名为`DbHelperOra.cs`的类...

    oci.dll(版本:oracle 11.2.0.1)

    在开发过程中,开发者需要引用oci.dll,并且通常需要配置Oracle客户端环境,包括设置Oracle Home、TNSNAMES.ORA文件(定义数据库连接)以及注册oci.dll所在的目录到系统PATH变量。这样,应用程序在运行时才能找到并...

    Spring boot连接oracle数据库JDBC配置步骤

    spring.datasource.primary.url=jdbc:oracle:thin:@localhost:1521:SMARTMES spring.datasource.primary.username=system spring.datasource.primary.password=123456 spring.jpa.hibernate.ddl-auto=create ``` ...

    oracle连接需要的驱动

    1. ** Thin Driver (jdbc:oracle:thin)**:这是一种轻量级驱动,不依赖于Oracle客户端库。它直接与Oracle数据库服务器通信,适用于网络环境中的远程连接。在描述中提及的“版本为oracle 10.2.0.3.0”,这应该是...

    oracle 左连接 右连接学习

    全连接返回两个表的并集,即包括左右表中的所有记录。如果某个记录在一表中不存在,将以 null 值代替。 交叉连接(Cross Join) 交叉连接是将两个表的所有记录组合成一个结果集,生成一个笛卡尔积。例如: SELECT...

    oracle驱动jar包10.2.0

    "jdbc:oracle:thin:@//hostname:port/service_name", "username", "password"); ``` 4. **JDBC连接池**:在实际应用中,通常会使用连接池管理数据库连接,如C3P0、DBCP或Apache DBCP2等,以提高性能并减少资源...

    delphi下最佳oracle控件:Oracle Data Access Components

    Oracle compatibility ODAC supports Oracle servers 11g, 10g, 9i, 8i, 8.0, and 7.3, including Oracle 10g Express. ODAC supports x86 versions of the following Oracle clients: 11g, 10g, 9i, 8i, 8.0, and ...

    oracle数据库表左连接右连接全连接的认识

    Oracle 数据库表连接(Join)知识点总结 Oracle 数据库表连接(Join)是指从两个或多个表中检索数据,并且将它们组合成一个结果集的操作。连接操作可以大大提高数据库查询的效率,特别是在需要访问多个表中的字段...

    jdbc-oracle-thinjdbc-oracle-thin

    在提供的部分内容中,“`jdbc:oracle:thin:@SFMWLHRTRLFQJQA:1521:orclsid`” 是一个典型的 JDBC-Oracle-Thin 连接字符串。下面我们将逐个部分进行解析: - **jdbc:**:表示使用 JDBC 协议。 - **oracle:**:指定...

    oracle驱动DBD-Oracle-1.27

    my $dsn = "dbi:Oracle:host=your_host;sid=your_sid"; my $username = "your_username"; my $password = "your_password"; my $dbh = DBI->connect($dsn, $username, $password) or die $DBI::errstr; my $sth = ...

    JAVA 使用数据库连接池连接Oracle数据库全代码

    ### JAVA 使用数据库连接池连接Oracle数据库全代码解析 #### 一、概述 本文将详细介绍如何在Java项目中使用Apache DBCP(Database Connection Pool)来连接Oracle数据库,并提供完整的示例代码。通过这种方式,我们...

    DBD-Oracle-1.74.tar.gz

    5. **测试连接**:安装完成后,可以通过Perl脚本测试DBD::Oracle是否工作正常,例如创建一个简单的Perl脚本连接到Oracle数据库并执行SQL查询。 在使用DBD::Oracle时,开发者需要注意以下几点: 1. **连接参数**:...

    免安装Oracle客户端软件连接Oracle数据库

    1. **Oracle Instant Client**:Oracle Instant Client是一套精简版的Oracle客户端工具,它包含了一些必要的运行时库和实用程序,如oci.dll、sqlplus等,可以用于连接到Oracle数据库。相比完整的Oracle客户端,它...

Global site tag (gtag.js) - Google Analytics