`
minghaitang
  • 浏览: 129113 次
社区版块
存档分类
最新评论

oracle 学习笔记_外连接查询详解

阅读更多

外连接之前,先举例介绍内连接,也就是一般的相等连接。

select * from a, b where a.id = b.id;

对于外连接oracle中可以使用“(+)”来表示,9i可以使用left/right/full outer join,下面将配合实例一一介绍。

1. left outer join:左外关联


select e.last_name, e.department_id, d.department_name  
from employees e  
left outer join departments d  
on (e.department_id = d.department_id);


等价于

select e.last_name, e.department_id, d.department_name  
from employees e, departments d  
where e.department_id=d.department_id(+);


结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。

2. right outer join:右外关联

select e.last_name, e.department_id, d.department_name  
from employees e  
right outer join departments d  
on (e.department_id = d.department_id);


等价于

select e.last_name, e.department_id, d.department_name  
from employees e, departments d  
where e.department_id(+)=d.department_id;


结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。

3. full outer join:全外关联

select e.last_name, e.department_id, d.department_name  
from employees e  
full outer join departments d  
on (e.department_id = d.department_id);


结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。

 

其实啊 :外连接就是查两张表 左连接就是左边的表全有值,右边表的值可以为空(+)

                                                右连接是左边表值可以为空(+)    右边表的值全有

                                                全连接是左连接和右连接的并集 好像是这个符号(U)

                                                内连接是左连接和右连接的交集 。。。  

其余连接方式:

cross join: 交叉连接,查出的表的笛卡尔积 eg: select * from A cross join B    (A表有M行,B表有N行,结果是M*N行)。

左连接

             a.id=b.id(+) ===> a表内容全部显示,以左边的表为基准

              left join : left join 左边的表全部显示,以左边的表为基准;

              select * from emp e left join dept d on e.deptno=d.deptno;

右连接    a.id(+)=b.id ===> b表内容全部显示,以右表的表为基准。

              right join: right join 右边的表全部显示,以右边的表为基准

             select * from emp e right join dept d on e.deptno=d.deptno;

right join ,left join 没有 where from 语句等。

   注:+号在=号左边叫右连接,+号在=右边叫做左连接。   

自然连接:natural join

           自然连接,natural join 会根据列明,自动创建连接,省略where语句,避免笛卡尔积的出现

   eg: select empno,ename,sal,deptno,loc from emp natural join dept;

using :表示与指定的列相关联。

eg: select e.ename,e.sal,deptno,d.loc from emp e join dept d using (deptno) where deptno=20;

注:被using 子句所引用的列,在sql 语句中的任何地方不能使用表名或者别名作为前缀。

 

 

 

 

PS :做外连接的时候,where 条件中不可以加从表的条件,需将从表做个子查询,做成另外一个表。

eg :select t.acctype, nvl(b.name,t.acctype) as name
      from biacciccardmaptb t, dictcodesettb b
      where b.category = '账户类型'
        and t.acctype=b.code(+)
        and t.iccardno = '1000751090001385'   this is wrong

should :

select t.acctype, nvl(b.name,t.acctype) as name
from biacciccardmaptb t, (select * from dictcodesettb where category = '账户类型' )b
where
    t.acctype=b.code(+)
   and t.iccardno = '1000751090001385'      

分享到:
评论

相关推荐

    Oracle学习笔记_(PDF版)

    ### Oracle学习笔记要点 #### 一、SQL Plus的使用方法 - **命令行方式**: 在命令行中直接输入 `sqlplus` 命令,并随后输入用户名和密码。 - **客户端方式**: 使用Oracle提供的SQL Plus客户端工具进行登录。 - **Web...

    Oracle学习笔记 PDF

    ### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...

    Oracle学习笔记

    从提供的标题、描述以及部分文本内容来看,这份“Oracle学习笔记”主要围绕Oracle数据库中的查询语句及其各种类型进行深入探讨。尽管描述部分重复了标题的文字,但主要内容段落包含了丰富的信息,下面将对这些知识点...

    Oracle学习笔记 Oracle学习笔记

    根据提供的信息,我们可以总结出以下Oracle数据库学习的关键知识点: ...以上是基于提供的内容整理出的Oracle学习笔记中的关键知识点。通过理解这些基础知识,可以更好地管理和操作Oracle数据库。

    oracle学习笔记

    oracle 学习笔记总结 记录详细 Oracle8i9i知识全讲解 Oracle Note Oracle_EXP、IMP用法详解 Oracle_Job应用 Oracle_闪回技术 Oracle_体系结构 Sql_各种连接

    Oracle_DBA_java.rar_oracle_oracle 笔记

    【Oracle DBA与Java知识点详解】 Oracle数据库管理系统是全球广泛使用的商业级数据库系统,而Java是一种多平台的、面向对象的编程语言。这两者在IT领域中都有着举足轻重的地位,尤其在企业级应用开发中,Oracle作为...

    Oracle 10g 学习笔记

    │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01...

    Oracle查询操作的学习笔记

    ### Oracle查询操作学习笔记知识点详解 #### 一、Oracle用户管理与权限分配 - **创建用户**:在Oracle中创建用户的基本语法为`CREATE USER username IDENTIFIED BY password`。例如,`CREATE USER xiaoming ...

    Oracle 笔记 详解 资料 用例

    这份"Oracle笔记详解资料用例"涵盖了Oracle数据库的核心概念、安装配置、SQL语言、表和索引、存储结构、备份恢复、性能优化等多个方面,是学习和掌握Oracle数据库的宝贵资源。 首先,Oracle数据库的基础部分包括...

    Oracle学习笔记(rownum和rowid)

    Oracle学习笔记(rownum和rowid),有具体的代码案例讲解rownum和rowid

    Oracle学习笔记.doc

    ### Oracle学习笔记知识点详解 #### 一、SQL概述与Oracle简介 - **SQL**(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。它被用来执行各种数据库操作,如查询数据、更新数据...

    达内Oracle学习笔记

    ### 达内Oracle学习笔记概览 在达内科技培训的笔记中,Oracle学习部分提供了对Oracle数据库系统深入的理解和操作技巧,对于初学者及希望深化Oracle技能的专业人士都极具价值。以下是从标题、描述、标签以及部分内容...

    oracle学习笔记,oracle学习教材,oracle学习教程,oracle课件

    ### Oracle学习笔记与教程知识点详解 #### Oracle 9i概览与重要性 **Oracle 9i**,作为Oracle数据库发展史上的一个里程碑,不仅是一个简单的数据库服务器产品,更是一个全面的应用系统运行与开发平台。它标志着...

    02_oracle学习笔记第一天

    以上是对标题“02_oracle学习笔记第一天”中提到的基本查询、多行查询、组函数等内容的知识点总结与扩展。这些基础概念和技术对于初学者来说至关重要,是掌握 Oracle 数据库管理和开发技能的关键步骤。

    oracle学习详解 笔记

    oracle学习详解 笔记 建表,建库,权限,存储,索引,分页,+java分页——java存储

    Oracle 学习笔记

    ### Oracle 学习笔记知识点详解 #### 一、Oracle 数据库简介 Oracle 是一款由美国甲骨文公司开发的关系型数据库管理系统。它以其强大的数据处理能力、高度的安全性及稳定性而闻名于世,在金融、电信、政府等领域...

    Oracle_SQL学习笔记

    ### Oracle SQL 学习笔记关键知识点详解 #### 并行查询与DML操作 并行查询在Oracle中是一项提升查询性能的重要技术,特别是在处理大数据量的表时。通过`ALTER SESSION ENABLE PARALLEL DML`语句,我们可以开启当前...

Global site tag (gtag.js) - Google Analytics