Oracle 11g R1(11.1) Joins表连接.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle 11g R1(11.1) Joins表连接

Oracle 11g R1(11.1) Joins表连接 本文内容 概述 本文使用的表和其数据 Oracle 11g R1 表连接 连接条件 等值连接(Equijoin) 自连接(Self Joins) 笛卡尔积(Cartesian Products) 内连接(Inner Joins) 外连接(Outer Joins) 反连接(Antijoins) 半连接(Semijoins) 参考资料 概述 Oracle 8i 之前的表连接: 等值连接(Equijoin)。 自连接(Self join)。 外连接(Outer join)。包括左外连接和右外连接。 Oracle 9 之后的表连接: 等值连接(Equijoin)。 自连接(Self join)。 内连接(Inner join)和交叉连接(Cross Joins)。 外连接(Outer join)。包括左外连接、右外连接和全外连接,以及对它们进行分区。 自然连接(Natural join)。 还可以使用 Using 关键字和 on 关键字建立连接。 本文使用的表和其数据 部门表 DEPT 员工表 EMP 注意: 1,员工表中没有部门为 40 的员工。 2,员工编号 7839 为职位最高的人,它没有上级。 3,员工编号为 7654、7876、7934 没有部门。 Oracle 11g R1 表连接(Joins) “连接(Join )”是一个查询,把两个或多个表(table)、视图(view)或物化视图(materialized view)的数据行合并在一起。无论何时,当多个表出现在 FROM 子句,Oracle 数据库都会执行一个连接。select 会列出所有表的所有列。 select * from emp, dept 如果任何两个表有同名的列,那么你必须用表名限定所有引用的列,避免歧义。 select emp.empno, emp.ename, emp.job, emp.mgr, emp.hiredate, emp.sal, m, emp.deptno, dept.deptno, dept.dname, dept.loc from emp, dept 连接条件 大多数连接查询至少包含一个连接条件,或是在 FROM 子句,或是 WHERE 子句。连接条件在每一个不同的表中比较两个列。执行一个连接时,Oracle 合并每个表的每行,以便计算连接条件为 TRUE。连接条件中的列不必出现在 select 子句中。 若要执行三个,或更多个表的连接,Oracle 先根据连接条件,比较前两个表的列,连接前两个表,再基于连接条件,把这个连接结果与另一个表连接。Oracle 将继续这一过程,直到所有的表都被连接到结果中。优化器基于连接条件、表的索引,以及表的统计信息决定连接的顺序。 包含连接条件的 WHERE 子句也可以包含其他条件,这些条件可以进一步限制连接查询返回的行,如表中的某列。 注意:如果 WHERE 子句包含连接条件,那么不能在 WHERE 子句中指定 LOB 列。在 WHERE 子句中使用 LOB 也会受到其他限制。参阅:Oracle Database SecureFiles 和 Large Objects 开发人员指南。 等值连接(Equijoins) “等值连接”是在连接条件中包含相等操作符的连接。“等值连接”合并具有相等值的规定的列的数据行。根据内部算法,优化器选择执行的连接,一个单表等值连接的列的总大小被限制在一个数据块内,以减少开销。数据块的大小是由初始化参数 DB_BLOCK_SIZE 指定的。 示例1:演示返回所有员工的编号和名字,以及所在的部门编号和名称。 select emp.empno, emp.ename, dept.deptno, dept.dname from emp, dept where emp.deptno = dept.deptno order by emp.empno asc 结果: 示例2:演示返回职位为“经理”员工的编号和名字,以及所在的部门编号和名称。 select emp.empno, emp.ename, dept.deptno, dept.dname from emp, dept where emp.deptno = dept.deptno and emp.job = MANAGER order by emp.empno asc 结果: 自连接(Self Joins) “自连接”是一个表连接自己的

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档