一般的相等连接:
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提供了多种表连接方式,包括NESTED LOOP、HASH JOIN和SORT MERGE JOIN等。 NESTED LOOP NESTED LOOP是一种...
这是因为ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询..数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性...
本文主要探讨Oracle SQL优化中的表连接方式、特性和适用场景,以及如何进行优化。 首先,我们了解表连接的基本概念,它通过FROM子句中的多个表和WHERE子句中的连接条件来组合数据。Oracle提供了多种连接类型,包括...
Oracle 表的扫描方式及连接方法 Oracle 表的扫描方式是指 Oracle 访问表的方法,包括全表扫描、索引扫描、索引范围扫描、索引唯一扫描等。这些扫描方式的选择取决于查询的条件、索引的类型和数据的分布。 一、全表...
"Oracle 的三种表连接方式详解" Oracle 的三种表连接方式是指在做表 join 的时候, Oracle 有三种方式,分别是:sort merge join(SMJ) ·nest loop(NL) ·hash join(HJ)。下面是对这三种策略的详细讲解: sort ...
标题中提到的“Oracle客户端连接远程服务器”,是指使用Oracle数据库客户端软件来建立与远程Oracle数据库服务器的连接。Oracle数据库是一种广泛使用的商业数据库系统,它支持多用户并发访问并保证数据的一致性,适用...
您可能感兴趣的文章:常用的Oracle doc命令(收藏)Oracle 多行记录合并/连接/聚合字符串的几种方法Oracle中字符串连接的实现方法php连接oracle数据库及查询数据的方法plsql连接oracle数据库报ora 12154错
Oracle 数据库表连接方式及常见用法 Oracle 数据库表连接方式是指在数据库中连接两个或多个表以获取所需的数据。这些连接方式包括相等连接、外连接、不等连接、自连接和哈希连接等。本文将详细介绍这些连接方式的...
以上就是关于如何查看、调整Oracle数据库连接数量限制的方法。在实际操作中,还需要根据具体的环境和需求来决定最适合的解决方案。希望这些信息能帮助你在遇到数据库连接超限时,能够快速有效地解决问题。
本篇将详细介绍C#中连接Oracle数据库的方法,包括所需的组件、连接字符串的构建以及使用ADO.NET进行数据操作的基本步骤。 首先,你需要在你的项目中引入Oracle客户端库。Oracle提供了一个名为ODP.NET(Oracle Data ...
oracle数据库连接工具:toad oracle 11
Oracle 中的连接(Join)是一种强大的工具,用于将两个或多个表合并成一个结果集。在学习 Oracle 连接时,可能会感到困惑,因为有多种类型的连接,每种类型都有其特点和应用场景。下面我们将详细介绍 Oracle 中的左...
介绍SQL语句中的多表连接查询。主要讲解了表连接的形式和笛卡尔积,程序也重点讲解了表的左连接、右连接、自然连接等基本概念。
总结来说,理解 Oracle 中的表连接方法和它们的适用场景是提高 SQL 查询性能的关键。通过合理选择连接方式,配合索引策略,我们可以显著减少查询时间,提升数据库应用的响应速度。在实际工作中,应结合具体业务需求...
在易语言中,开发者可以利用这些基础概念和方法,构建出强大的Oracle数据库应用。无论是简单的数据查询,还是复杂的业务逻辑处理,都能借助易语言和Oracle数据库连接模块实现。对于初学者,理解这些基本原理并结合...
- 嵌套循环连接是一种基本的连接方法,其原理是通过将一个表中的每一行与另一个表中的所有行进行比较来找出符合条件的记录对。 - 在许多情况下,较小的表会被用作“驱动表”,即首先被处理的表。但是,实际上,即使...
本文将详细介绍几种常用的ORACLE连接设置方法,重点聚焦于远程连接的方式。这包括但不限于在本地未安装ORACLE服务器或客户端的情况下,如何利用诸如PL/SQL Developer、Toad SQL Development、SQL Navigator等工具来...
在本文中,我们将详细介绍SAP开发中模块连接Oracle数据库的具体方法步骤。 首先,需要建立目录,使用mkdir命令创建/oracle/client/11x_64目录,并将其所有权更改为eq1adm用户,使用chown命令实现。然后,进入/...