`
huiqinbo
  • 浏览: 344404 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle数据库左右内外连接 【回钦波详解】

 
阅读更多
oracle数据库左右内外连接
2010-04-27 10:25

--建立测试数据     
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        
--建立测试数据     
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    

分享到:
评论

相关推荐

    云时代的数据库 - Oracle 的技术演进之路和19c新特性揭秘.pdf

    Oracle数据库作为业界领先的关系型数据库管理系统,一直在技术演进的道路上不断创新,以适应云时代的需求。随着云计算的崛起,Oracle开始全面转向云服务,推出了一系列的新特性以满足企业对数据管理的高性能、高可用...

    oracle分页查询sql

    在Oracle数据库中,实现分页查询主要有两种方式:基于`ROWNUM`和基于`OFFSET`和`FETCH`。在早期版本的Oracle中,通常使用`ROWNUM`来实现分页功能。 #### 三、基于ROWNUM的分页查询 基于`ROWNUM`的分页查询是Oracle...

    Oracle包应用详解[归类].pdf

    Oracle包是PL/SQL编程中的一个重要概念,它提供了一种模块化和信息隐藏的方式来组织和管理数据库中的程序元素。包可以包含过程、函数、变量、常量和游标等,类似于面向对象编程中的类,其中变量对应于成员变量,过程...

    oracle查询语句大全

    SQL(Structured Query Language)作为与数据库交互的标准语言,在Oracle数据库管理中占据核心地位。本文将详细介绍Oracle中常用的查询语句,包括条件查询、模糊查询、多层次查询以及内外连接查询等。 #### 二、...

    ORACLE存储过程学习

    ### ORACLE存储过程学习知识点详解 #### 一、存储过程概述 存储过程是数据库中预编译好的一组SQL语句,它可以实现复杂的数据处理逻辑,提高应用开发效率,并且能够增强应用程序的安全性。Oracle存储过程使用PL/SQL...

    H3C SecPath D2020 数据库审计-产品白皮书.pdf

    《H3C SecPath D2020 数据库审计产品详解》 在信息化时代,数据库作为存储关键业务信息的核心载体,其安全性对于任何组织来说都至关重要。H3C SecPath D2020 数据库审计产品,正是针对这一需求而设计的专业安全审计...

    Portal教程

    - **Portal使用Oracle数据库后的分配情况**:当门户系统迁移到Oracle数据库后,数据表、索引、存储过程等的分配和组织方式。 **7、3 数据库移植步骤** - **升级Oracle数据库**:确保目标Oracle数据库的版本兼容。 ...

    学生家校联系系统设计

    在学生家校联系系统中,MySQL或者Oracle等关系型数据库常被选用,用于存储学生信息、家长信息、通知公告、成绩记录等大量数据。通过JDBC(Java Database Connectivity)接口,Java程序可以方便地与数据库进行交互,...

    服务器双机热备

    2. **数据库配置**:如果是安装Oracle数据库服务,则需要对Oracle的一些特定配置有所了解。 3. **心跳线的冗余设计**:除了网络心跳线之外,还可以考虑使用RS232串口线作为冗余的心跳检测方式,进一步提高系统的稳定...

    CacheCloud搭建和配置(适用内外网)

    ### CacheCloud搭建与配置知识点详解 #### 一、Oracle JDK 8 的部署 **1.1 下载Oracle JDK 8** 对于CacheCloud的部署来说,使用Oracle JDK而非OpenJDK至关重要,因为OpenJDK可能会导致CacheCloud运行时出现错误。...

    毕业设计JSP企业电子投票系统(源代码+论文+开题报告+外文翻译+文献综述).zip

    系统中的数据存储通常依赖于关系型数据库,如MySQL或Oracle。数据库中可能包含用户信息表、投票项目表、投票选项表和投票记录表等,用于存储和管理投票过程中的各种数据。例如,`.doc`文件可能是开题报告或论文中...

    大学生社团管理系统JSP

    4. 数据库连接池:如C3P0或DBCP,优化数据库连接管理,提高系统性能。 五、系统优势 1. 易用性:用户界面直观,操作简单,适合不同层次的用户使用。 2. 可扩展性:基于JSP的系统架构,易于添加新的功能模块或进行...

    2018 Java 工程师面试总结

    11. **字符集与编码**:掌握不同字符集的特点,如Oracle数据库中查看字符数和字节数的函数。 12. **安全问题**:防止SQL注入是开发中的重要任务,面试可能会问到你的实践经验和相关知识。 13. **操作系统**:在...

    SQL 21 日自学通.pdf

    - **流行的SQL开发工具**:介绍如MySQL Workbench、Oracle SQL Developer、Microsoft SQL Server Management Studio等常用的SQL开发环境,以及它们的特点和应用场景。 - **SQL在编程中的应用**:阐述SQL如何与各种...

    网闸技术文档

    在物理层面,隔离交换模块作为内外主机系统唯一的连接部件,通过Leadsec ASIC安全隔离芯片将数据块转化为自有协议格式的数据包。在逻辑层面,隔离交换模块中的交换芯片通过其开关控制子系统实现数据的临时缓存和安全...

    毕业设计-中医诊疗系统-疾病药品管理-中医开方.zip

    7. 技术栈选择:开发此类系统可能涉及到的技术有Java、Python、PHP等后端语言,MySQL或Oracle等数据库,HTML、CSS和JavaScript等前端技术,以及Spring Boot、Django或Vue.js等框架。 8. 移动应用支持:考虑到移动...

    “exists”和“in”的效率问题

    ### "Exists"与"In"的效率问题详解 #### 引言 在数据库查询语言SQL中,“Exists”与“In”是两种常用的子查询方法,它们在实际应用中各有优势与局限。本文将深入探讨这两种方法的工作原理、应用场景以及性能差异,...

    i@Report4.2.1_White_Paper

    - i@Report运行于多种操作系统之上,如Windows、Linux等,并且支持主流的数据库管理系统,如Oracle、MySQL等。 #### 五、业务模型 - **金字塔型**:适用于多层次的数据汇总需求。 - **数据大集中模型**:将所有...

Global site tag (gtag.js) - Google Analytics