`
chunfengxixi
  • 浏览: 42282 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Oracle表连接方式之内连接、外连接<转>

 
阅读更多

ORACLE 8i,9i 表连接方法。

一般的相等连接:
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中的几种主要表连接方式进行详细介绍:内连接(Inner Join)、自然连接(Natural Join)、左外连接(Left Outer Join)、右外连接(Right Outer Join)、笛卡尔连接(Cartesian Join)、索引连接...

    .net 各种实用方法

    &lt;summary&gt;连接 Access读取数据&lt;/summary&gt; &lt;param name="FilePath"&gt;文件得知&lt;/param&gt; &lt;param name="strSQL"&gt;执行SQL语句&lt;/param&gt; &lt;param name="pwd"&gt;密码&lt;/param&gt; &lt;returns /&gt; &lt;remarks /&gt; &lt;/member&gt; - ...

    Oracle左(外)、右(外)、全(外)、(内)连接语法与SQL标准的比较

    通过对比可以看出,Oracle在实现左(外)、右(外)、全(外)以及内连接时,其语法与SQL标准有所不同,尤其是在左(外)和右(外)连接上使用了独特的“+”符号来表示可选项。对于全(外)连接,Oracle通过组合左(外)和右(外)...

    oracle的驱动连接包8.0版本

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其8.0版本在20世纪末期至本世纪初是很多企业的重要数据存储解决方案。Oracle驱动连接包是Java应用程序与Oracle数据库进行交互的关键组件,它实现了Java ...

    tomcat中连接oracle数据库的问题.pdf

    &lt;value&gt;oracle.jdbc.driver.OracleDriver&lt;/value&gt; &lt;/parameter&gt; &lt;parameter&gt; &lt;name&gt;driverName&lt;/name&gt; &lt;value&gt;jdbc:oracle:thin:@192.168.0.50:1521:oradb&lt;/value&gt; &lt;/parameter&gt; &lt;/ResourceParams&gt; ``` - ...

    数据库连接池 使用方法

    &lt;value&gt;oracle.jdbc.driver.OracleDriver&lt;/value&gt; &lt;/parameter&gt; &lt;parameter&gt; &lt;name&gt;url&lt;/name&gt; &lt;value&gt;jdbc:oracle:thin:@192.168.39.215:1521:jetchin&lt;/value&gt; &lt;/parameter&gt; &lt;/ResourceParams&gt; &lt;/Resource&gt;...

    AppFramework_V1.0

    15.9&lt;br&gt;&lt;br&gt;SqlMap:20.3&lt;br&gt; 1.48&lt;br&gt;&lt;br&gt;1.16&lt;br&gt; &lt;br&gt;查询结果集(平均101行)&lt;br&gt;&lt;br&gt;(1循环200次select)&lt;br&gt; 1055.1&lt;br&gt; 666.8&lt;br&gt;&lt;br&gt;不定字段:710.1&lt;br&gt; 1.58&lt;br&gt;&lt;br&gt;1.50&lt;br&gt; &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;表III –50...

    Oracle左连接,右连接.doc

    根据不同的需求,Oracle提供了多种连接方式,其中左连接(LEFT OUTER JOIN)、右连接(RIGHT OUTER JOIN)和内连接(INNER JOIN)是最常用的三种类型。 #### 二、内连接(INNER JOIN) 内连接是一种最基础的连接...

    Oracle中的几种表连接区别

    本文将详细介绍Oracle中常见的几种表连接方式及其应用场景,包括内连接(Inner Join)、外连接(Outer Join)、左连接(Left Join)、右连接(Right Join)等,并通过具体的例子来帮助理解每种连接的特点与区别。...

    AppFramework_V1.0_New

    18.0&lt;br&gt;1.23&lt;br&gt;&lt;br&gt;1.10&lt;br&gt;&lt;br&gt;每秒插入实体&lt;br&gt;&lt;br&gt;(20次insert)&lt;br&gt;41&lt;br&gt;21&lt;br&gt;1.95&lt;br&gt;&lt;br&gt;更新实体&lt;br&gt;&lt;br&gt;(20次单条update)&lt;br&gt;27&lt;br&gt;19&lt;br&gt;&lt;br&gt;SqlMap:24&lt;br&gt;1.42&lt;br&gt;&lt;br&gt;1.13&lt;br&gt;&lt;br&gt;查询结果集(平均101...

    Jdbc连接oracle远程数据库中文乱码解决

    Oracle数据库作为一款广泛应用的关系型数据库系统,其与Java应用程序的集成常常会遇到各种问题,其中之一就是字符编码导致的中文乱码问题。本文将深入探讨如何通过JDBC(Java Database Connectivity)连接Oracle远程...

    AppFramework数据库访问组件_代码生成插件_V1.1.rar

    18.0&lt;br&gt;1.23&lt;br&gt;&lt;br&gt;1.10&lt;br&gt;&lt;br&gt;每秒插入实体&lt;br&gt;&lt;br&gt;(20次insert)&lt;br&gt;41&lt;br&gt;21&lt;br&gt;1.95&lt;br&gt;&lt;br&gt;更新实体&lt;br&gt;&lt;br&gt;(20次单条update)&lt;br&gt;27&lt;br&gt;19&lt;br&gt;&lt;br&gt;SqlMap:24&lt;br&gt;1.42&lt;br&gt;&lt;br&gt;1.13&lt;br&gt;&lt;br&gt;查询结果集(平均101...

    tomcat下配置oracle的连接池

    2. **配置数据源**: 在Tomcat的`conf/server.xml`文件中,我们需要在`&lt;GlobalNamingResources&gt;`标签内定义一个数据源。例如: ```xml &lt;Resource name="jdbc/OracleDS" auth="Container" type="javax.sql....

    JSP实践之旅.exe

    Tomcat.JSP&lt;br&gt;JSWDK环境安装与配置&lt;br&gt;Resin服务器平台介绍&lt;br&gt;Resin在...之完全攻略&lt;br&gt;如何同时安装并支持PHP和JSP&lt;br&gt;redhat下tomcat的安装&lt;br&gt;在Windows NT 4.0下安装Apache+Servlet+JSP&lt;br&gt;Redhat+apache+jserv+...

    Jboss7.1.1p配置mysql和oracle以及项目调用参照.pdf

    4. **驱动配置**:同样地,在`&lt;drivers&gt;`标签内添加对MySQL和Oracle驱动的支持: ```xml &lt;driver name="mysql" module="com.mysql.jdbc"&gt; &lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt; &lt;xa-datasource-...

    Oracle中的外连接

    Oracle中的外连接是数据库查询中的一种重要连接类型,它允许用户获取所有来自一个表的数据,即使这些数据在另一个表中没有匹配的记录。这与内连接不同,内连接只返回两个表中有匹配记录的结果。 首先,我们要理解外...

    oracle表结构导word工具

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的数据管理和处理能力深受企业和开发人员的喜爱。在日常工作中,数据库管理员和开发人员经常需要将Oracle数据库的表结构文档化,以便于理解和维护。"Oracle...

    oracle数据库导出表结构到WORD文档

    在实际应用中,导出Oracle表结构到Word文档不仅适用于内部团队的交流,也是对外沟通的重要方式,尤其是当需要与非技术背景的人员解释数据库设计时。通过清晰、直观的Word文档,可以有效地传达数据库设计的复杂性,...

Global site tag (gtag.js) - Google Analytics