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

Oracle表连接方式

阅读更多

转自:http://blog.csdn.net/tiwen818/article/details/6895373

一般的相等连接: 
select * from a, b where a.id = b.id; 
这个就属于内连接。 

对于外连接: 
Oracle中可以使用“(+) ”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN 

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的员工记录。 

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 
结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。 

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的员工记录和没有任何员工的部门记录。

ORACLE8i是不直接支持完全外连接的语法,也就是说不能在左右两个表上同时加上(+),下面是在ORACLE8i可以参考的完全外连接语法
select t1.id,t2.id from table1 t1,table t2 where t1.id=t2.id(+) 
union 
select t1.id,t2.id from table1 t1,table t2 where t1.id(+)=t2.id

连接类型 定义 图示 例子
内连接 只连接匹配的行 select A.c1,B.c2 from A join B on A.c3 = B.c3;
左外连接 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行)以及右边表中全部匹配的行 select A.c1,B.c2 from A left join B on A.c3 = B.c3;
右外连接 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行)以及左边表中全部匹配的行 select A.c1,B.c2 from A right join B on A.c3 = B.c3;
全外连接 包含左、右两个表的全部行,不管在另一边的表中是否存在与它们匹配的行 select A.c1,B.c2 from A full join B on A.c3 = B.c3;
(theta)连接 使用等值以外的条件来匹配左、右两个表中的行 select A.c1,B.c2 from A join B on A.c3 != B.c3;
交叉连接 生成笛卡尔积——它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行一一匹配   select A.c1,B.c2 from A,B;
分享到:
评论

相关推荐

    ORACLE表连接方式分析及常见用法

    本文主要探讨Oracle SQL优化中的表连接方式、特性和适用场景,以及如何进行优化。 首先,我们了解表连接的基本概念,它通过FROM子句中的多个表和WHERE子句中的连接条件来组合数据。Oracle提供了多种连接类型,包括...

    ORACLE表连接方式的分析与优化_tony.doc

    ORACLE表连接方式的分析与优化_tony.doc

    Oracle数据库中表的四种连接方式讲解

    根据连接方式的不同,表连接主要分为四种类型:相等连接、外连接、不等连接和自连接。 1. 相等连接(Equal Join) 相等连接是最常见的连接类型,基于两个或更多表之间相同列的值相等来合并数据。例如,在`EMP`和`...

    Oracle数据库表连接方式及常见用法

    Oracle 数据库表连接方式及常见用法 Oracle 数据库表连接方式是指在数据库中连接两个或多个表以获取所需的数据。这些连接方式包括相等连接、外连接、不等连接、自连接和哈希连接等。本文将详细介绍这些连接方式的...

    Oracle的三种表连接方式

    "Oracle 的三种表连接方式详解" Oracle 的三种表连接方式是指在做表 join 的时候, Oracle 有三种方式,分别是:sort merge join(SMJ) ·nest loop(NL) ·hash join(HJ)。下面是对这三种策略的详细讲解: sort ...

    Oracle数据库3种主要表连接方式对比

    ### Oracle数据库三种主要表连接方式对比 在Oracle数据库中,为了获取来自多个表的数据,我们需要使用不同的连接方式来实现这一目的。本文将详细介绍三种主要的表连接方式:嵌套循环连接(Nested Loop Join,简称NL...

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

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

    Oracle表连接的具体讲解

    自连接是一种特殊的表连接方式,它将同一个表连接到自己身上。例如: SQL> Select a.id,a.name,b.name from dave a join dave b on a.id=b.id; 自连接可以用于实现某些复杂的查询操作,例如查找某个表中的重复记录...

    oracle表的连接方式

    ### Oracle表的连接方式详解 在Oracle数据库中,表连接是一种常见的操作,用于结合两个或多个表中的数据,以提供更全面的信息。Oracle提供了三种主要的表连接方式:NESTED LOOP JOIN、HASH JOIN和SORT MERGE JOIN。...

    Oracle 表的扫描方式及连接方法

    Oracle 表的扫描方式及连接方法 Oracle 表的扫描方式是指 Oracle 访问表的方法,包括全表扫描、索引扫描、索引范围扫描、索引唯一扫描等。这些扫描方式的选择取决于查询的条件、索引的类型和数据的分布。 一、全表...

    Oracle中表的四种连接方式讲解

    本文主要探讨了四种基本的连接方式:相等连接、外连接(包括左外连接和右外连接)、不等连接和自连接。 1. 相等连接: 相等连接是最基础的连接类型,它基于两个表中相同意义的列之间的相等条件。例如,在查询员工...

    ORACLE 数据库如何连接,连接方式

    以下将详细讲解Oracle数据库的连接方式和配置过程。 首先,Oracle数据库连接主要通过以下几种方式实现: 1. **SQL*Plus**:这是Oracle提供的一种命令行工具,可以直接在命令行界面输入SQL语句与数据库交互。要连接...

    oracle客户端连接远程服务器

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

    oracle数据库连接工具

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

    oracle 左连接 右连接学习

    Oracle 中的连接(Join)是一种强大的工具,用于将两个或多个表合并成一个结果集。在学习 Oracle 连接时,可能会感到困惑,因为有多种类型的连接,每种类型都有其特点和应用场景。下面我们将详细介绍 Oracle 中的左...

    强制释放Oracle数据连接方案

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

Global site tag (gtag.js) - Google Analytics