一般的相等连接:
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; |
分享到:
相关推荐
Oracle8i和9i是Oracle数据库的两个早期版本,提供了强大的数据库管理和应用程序开发功能。这份文档《Oracle8i_9i数据库设计基础》是赵元杰于2003年编写的,旨在为读者提供Oracle数据库设计的基础知识,涵盖了SQL*...
标题提到的"plsql8.02"指的是该工具的8.02版本,它支持连接到Oracle 8i和Oracle 9i数据库系统。这两个版本是Oracle在20世纪末和21世纪初推出的产品,Oracle 8i(Internet Edition)主要加强了对Web应用的支持,而...
在Oracle8i和9i中,表是最基本的数据结构,由列和行组成,用来存储特定类型的数据。索引是提高查询效率的关键,通过创建唯一索引、非唯一索引或复合索引,可以加速数据检索。 在数据库设计中,正常化是优化数据结构...
Oracle 8i到9i是Oracle数据库系统的重要版本,它们在数据库管理、性能优化和功能扩展方面都有着显著的提升。这本书“Oracle8i-9i精髓”无疑为初学者提供了一个深入了解这两个版本的宝贵资源。以下是一些核心知识点的...
Oracle8i和9i是Oracle数据库的两个早期版本,它们为用户提供了一整套的企业级数据库管理解决方案。在深入了解Oracle8i_9i数据库基础之前,我们先了解一下Oracle数据库的概览。 Oracle数据库是由甲骨文公司(Oracle ...
Oracle教程Oracle8i_9i是针对Oracle数据库系统的基础学习资料,主要涵盖了Oracle 8i和9i两个版本的相关知识。Oracle数据库是全球广泛使用的大型关系型数据库管理系统,由美国Oracle公司开发,它提供了高性能、高可靠...
Oracle 8i 和 9i 是 Oracle 公司在21世纪初发布的两个重要的数据库管理系统版本。这些版本在当时引入了许多新的特性和改进,为数据库管理员(DBAs)和开发人员提供了更强大的工具来管理数据。本文将深入讨论 Oracle ...
### Oracle8i_9i初级数据库管理知识点梳理 #### 一、Oracle8i与Oracle9i概述 **1.1 Oracle版本发展历程** - **Oracle7到Oracle8:** Oracle7标志着Oracle进入了成熟稳定阶段,而Oracle8则进一步增强了对Internet...
在Oracle8i中,DBCA仅支持前三种模式,而“模板管理”是Oracle9i新增的功能,允许用户管理和自定义数据库模板。 接下来,你需要选择一个数据库模板作为创建的基础。Oracle9i提供三种预设模板:数据仓储、在线交易...
这篇文档《Oracle8i_9i数据库基础》将带你深入理解这两个版本的关键特性、概念以及操作方法。 一、Oracle数据库系统概述 Oracle数据库系统是一种客户/服务器结构的数据库,它采用SQL语言进行数据查询和管理。Oracle...
### jsp连接Oracle8/8i/9i数据库(用thin模式) #### 一、基础知识简介 在Web开发中,JSP(Java Server Pages)是一种常用的技术,它允许开发者将动态内容嵌入到HTML页面中。为了实现数据的读取与操作,JSP通常...
Oracle 9i是Oracle公司在2001年发布的关系型数据库管理系统,其版本号中的"i"代表了互联网(Internet)的特性。9i版本引入了许多创新功能,如数据仓库优化、XML支持、自动存储管理等,旨在提高性能、可扩展性和互...
Oracle表连接方式是指在数据库中连接多个表以获取所需数据的方法。根据不同的数据集和查询需求,Oracle提供了多种表连接方式,包括NESTED LOOP、HASH JOIN和SORT MERGE JOIN等。 NESTED LOOP NESTED LOOP是一种...