`
chunfengxixi
  • 浏览: 41379 次
  • 性别: 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;

 

分享到:
评论

相关推荐

    .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; - ...

    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...

    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...

    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...

    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+...

    Object Browser7.0中文版(ORACLE数据库的开发工具)

    介绍&nbsp;Object&nbsp;Browser&lt;br&gt; &lt;br&gt; ● 是一个&nbsp;All&nbsp;...&lt;br&gt; ...Browser将Oracle的开发,管理,维护等各项功能集成...Oracle7,8的客户端程序被正常安装,并且处于与Oracle服务器可以成功连接的状态.&lt;br&gt;

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。  拉里•埃里森  就业前景 从就业与择业的...

    qtp连接oracle教程

    QTP连接ORACLE的教程 内含详细图解 欢迎分享!

    PHP基础教程 是一个比较有价值的PHP新手教程!

    而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样就可以声明全局变量了 } 更先进一些的是变量的变量表示。请参考PHP手册。这在...

    oracle动态性能表

    oracle动态性能表 学习动态性能表 第一篇--v$sysstat 2007.5.23  按照OracleDocument中的描述,v$sysstat存储自数据库实例运行那刻起就开始累计全实例(instance-wide)的资源使用情况。 类似于v$sesstat,该视图...

    震撼推出超方便实用的Oracle开发工具 - Oracle SQL Handler,双语界面,智能SQL编辑器,免装Oracle客户端,能运行于Windows, 双语界面

    &lt;9&gt;多线程、多连接:可以创建多个会话/连接,多个会话可以同时运行,在运行过程中可以掌控其运行状态、可 以随时中断之,在运行过程中可以继续从事编辑等工作,不必等待运行完毕才能编辑 &lt;10&gt;提供对常用数据字典...

    Oracle开发工具 - Oracle SQL Handler(功能强大,超方便好用, 免装客户端, Windows / Linux)

    &lt;9&gt;多线程、多连接:可以创建多个会话/连接,多个会话可以同时运行,在运行过程中可以 掌控其运行状态、可以随时中断之,在运行过程中可以继续从事编辑等工作,不必等待运行 完毕才能编辑 &lt;10&gt;提供对常用数据字典...

    最全的oracle常用命令大全.txt

    ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。 数据字典里存有用户信息、用户的权限信息、...

    Oracle10.2完美精简版客户端仅30M part1

    “开始”--&gt;"程序"--&gt;"Oracle Instant Client 10.2"--&gt; "tnsnames.ora配置",为远程服务器增加一个连接(别名)。格式如下:(注意修改IP地址和Oracle服务名称) Code MyOraServer = (DESCRIPTION = (ADDRESS = ...

    oracle版火车票销售系统-java-内附源码

    是根据你输入的某一列车次(必须是车次表里的车次和车站表里有与之相关的数据时才能使用)自动生成 列车表 里的数据 4 "生成车票表" 是根据你输入的某一ID(必须是列车表里的ID)自动生成 车票表 里的数据 5 ...

    韩顺平oracle学习笔记

    记住:欲速则不达,做任何事情要遵循他的规律,循序渐进,信心很重要 成为一个oracle高手过程:理解小知识点-&gt;做小练习-&gt;把小的只是点连成线-&gt;做oracle项目-&gt;形成只是面-&gt;深刻理解 Oracle基础部分:oracle基础使用; ...

    Oracle10.2完美精简版客户端仅30M part2

    “开始”--&gt;"程序"--&gt;"Oracle Instant Client 10.2"--&gt; "tnsnames.ora配置",为远程服务器增加一个连接(别名)。格式如下:(注意修改IP地址和Oracle服务名称) Code MyOraServer = (DESCRIPTION = (ADDRESS = ...

    Oracle练习笔试大全

    Oracle练习笔试大全 1、select ename, sal * 12 from emp; //计算年薪 2、select 2*3 from dual; //计算一个比较纯的数据用dual表 3、select sysdate from dual; //查看当前的系统时间 4、select ename, sal*12 ...

    Oracle9i备课笔记——吕海东

    &lt;3&gt; Oracle数据库配置助手完成数据库的创建和启动 &lt;4&gt; Oracle智能代理启动 (10) 显示服务器创建完成信息: (11) 进行数据库管理员的密码重新设定: - 9i DS client端安装: (1) DISK1在客户机上 (2) 选择产品:...

Global site tag (gtag.js) - Google Analytics