讲外连接之前,先举例介绍内连接,也就是一般的相等连接。
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学习笔记要点 #### 一、SQL Plus的使用方法 - **命令行方式**: 在命令行中直接输入 `sqlplus` 命令,并随后输入用户名和密码。 - **客户端方式**: 使用Oracle提供的SQL Plus客户端工具进行登录。 - **Web...
### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...
从提供的标题、描述以及部分文本内容来看,这份“Oracle学习笔记”主要围绕Oracle数据库中的查询语句及其各种类型进行深入探讨。尽管描述部分重复了标题的文字,但主要内容段落包含了丰富的信息,下面将对这些知识点...
根据提供的信息,我们可以总结出以下Oracle数据库学习的关键知识点: ...以上是基于提供的内容整理出的Oracle学习笔记中的关键知识点。通过理解这些基础知识,可以更好地管理和操作Oracle数据库。
oracle 学习笔记总结 记录详细 Oracle8i9i知识全讲解 Oracle Note Oracle_EXP、IMP用法详解 Oracle_Job应用 Oracle_闪回技术 Oracle_体系结构 Sql_各种连接
【Oracle DBA与Java知识点详解】 Oracle数据库管理系统是全球广泛使用的商业级数据库系统,而Java是一种多平台的、面向对象的编程语言。这两者在IT领域中都有着举足轻重的地位,尤其在企业级应用开发中,Oracle作为...
│ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01...
### Oracle查询操作学习笔记知识点详解 #### 一、Oracle用户管理与权限分配 - **创建用户**:在Oracle中创建用户的基本语法为`CREATE USER username IDENTIFIED BY password`。例如,`CREATE USER xiaoming ...
这份"Oracle笔记详解资料用例"涵盖了Oracle数据库的核心概念、安装配置、SQL语言、表和索引、存储结构、备份恢复、性能优化等多个方面,是学习和掌握Oracle数据库的宝贵资源。 首先,Oracle数据库的基础部分包括...
Oracle学习笔记(rownum和rowid),有具体的代码案例讲解rownum和rowid
### Oracle学习笔记知识点详解 #### 一、SQL概述与Oracle简介 - **SQL**(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。它被用来执行各种数据库操作,如查询数据、更新数据...
### 达内Oracle学习笔记概览 在达内科技培训的笔记中,Oracle学习部分提供了对Oracle数据库系统深入的理解和操作技巧,对于初学者及希望深化Oracle技能的专业人士都极具价值。以下是从标题、描述、标签以及部分内容...
### Oracle学习笔记与教程知识点详解 #### Oracle 9i概览与重要性 **Oracle 9i**,作为Oracle数据库发展史上的一个里程碑,不仅是一个简单的数据库服务器产品,更是一个全面的应用系统运行与开发平台。它标志着...
以上是对标题“02_oracle学习笔记第一天”中提到的基本查询、多行查询、组函数等内容的知识点总结与扩展。这些基础概念和技术对于初学者来说至关重要,是掌握 Oracle 数据库管理和开发技能的关键步骤。
oracle学习详解 笔记 建表,建库,权限,存储,索引,分页,+java分页——java存储
### Oracle 学习笔记知识点详解 #### 一、Oracle 数据库简介 Oracle 是一款由美国甲骨文公司开发的关系型数据库管理系统。它以其强大的数据处理能力、高度的安全性及稳定性而闻名于世,在金融、电信、政府等领域...
### Oracle SQL 学习笔记关键知识点详解 #### 并行查询与DML操作 并行查询在Oracle中是一项提升查询性能的重要技术,特别是在处理大数据量的表时。通过`ALTER SESSION ENABLE PARALLEL DML`语句,我们可以开启当前...