网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > 产品介绍 > Oracle9i 表连接  

Oracle9i 表连接

2003-08-22  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  Oracle对Oracle9i SQL 做了一些很重要的改进,包括一些令人兴奋的新特点,支持1:5的数量级和ISO99中的SQL标准。作为Oracle的补充,它包括以下新的TABLE JOIN的句法结构:
  
  CROSS IN——它在两个表格中创建了一个卡迪尔列,就象是在Oracle8i中没写WHERE时那样。
  
  NATURAL JOIN——这是一个很有用的Oracle9i的句法,它通过从WHERE子句中移动连接标准来改善SQL的稳定性
  
  USING子句——它可以通过名字来具体指定连接
  
  ON子句——这个句法允许在两个表格中为连接具体指定栏目的名头
  
  LEFT OUTER JOIN——它返回表格中左边的行和右边的数值,如果没有搭配的行的话,则返回零
  
  RIGHT OUTER JOIN——它返回表格中右边的行和左边的数值,如果没有搭配的行的话,则返回零
  
  FULL OUTER JOIN——它返回的是两个表格中所有的行,用零填满每一个空格。这在Oracle8i中则没有相应的此种句法
  
  大多数改进都是为了让那些非Oracle的请求以快速的进入Oracle数据库而引进的,并且必须记住这些只是句法上的不同,ISO99标准并没有给Oracle9i SQL带来任何新的功能。
  
  
  The CROSS JOIN 网管联盟bitsCN_com
  在Oracle中,CROSS JOIN产生了一个“卡迪尔的产物(Cartesian product)”,就象是在连接两个表格时忘记加入一个WHERE子句一样
  select last_name,dept_id
  from emp,depts;
  
  在Oracle9i中,我们使用CROSS JOIN 来达到相同的结果
  select last_name.dept_id
  from emp
  CROSS JOIN dept;
  
  NATURAL JOIN
  
  
  我喜欢NATURAL JOIN的原因在于它能够通过在两个表格中配对的栏目的名头来自动的检查join。它同时还简化了Oracle9i SQL,由于where子句仅仅只能过滤谓语,当然,NATURAL JOIN要求在每一个表格中的栏目的名字相同。很有意思的是,这种特性甚至在没有主要的或是外来的关键词作为参考是也能起作用
  
  
  
  Oracle8i,
  Select book_title, sum(quantity)
  From book, sales
  Where book.book_id = sales.book_id
  group by book_title;
  
  Oracle9i
  Select book_title, sum(quantity)
  from book
  natural join sales
  group by book_title;
  
  USING子句
  假如几个栏目有同样的名字,而你又不想用所有的这些栏目来连接的时候,你就可以用USING子句。在USING子句中所列的栏目的句子中不会有任何的修饰词,包括where子句也不会有
网管bitscn_com

  Oracle8i
  select dept_id, city
  from departments, locations
  where departments.location_id = location.location_id;
  
  Oracle9i
  select department_name, city
  from departments
  JOIN locations
  USING (location_id);
  
  ON子句
  ON子句被用于当在两个表格中的栏目名字不搭配时来连接表格。而连接条件就是where子句中的过滤条件
  Oracle8i
  select department_name, city
  from department, location
  where department.location_id = location.loc_id;
  
  Oracle9i
  select department_name, city
  from department d
  JOIN location l
  ON (d.location_id = l.id);
  
  易变的连接
  
  易变的连接就是两个以上的表格被连接所用的。ISO SQL 1999标准通常假设表格从左至右连接,连接的条件是能够为现在的连接或以前的与左边的连接相关联的栏目提供参考。
  Oracle8i
  select emp_id, city_name, dept_name
  from location l, department d, emp e
  where d.location_id = l.location_id
网管网www.bitscn.com

  and d.department_id = e.department_id;
  
  Oracle9i
  select emp_id, city_name, dept_name
  from locations l
  JOIN departments d ON (d.location_id = l.location_id)
  JOIN employees e ON (d.department_id = e.department_id);
  
  
  新的OUTER JOIN句法
  
  
  
  ISO99标准把复杂的加号从Oracle outer join中拿出去,并使得outer join SQL更容易理解。
  
  LEFT OUTER JOIN
  在LEFT OUTER JOIN中,会返回所有左边表格中的行,甚至在被连接的表格中没有可配对的栏目的情况下也如此。在下边的例子中,返回了所有雇员的姓,甚至包括了那些没有分配到部门的雇员。
  Oracle8i
  select last_name, dept_id
  from emp e, dept d
  where e.department_id = d.department_id(+);
  
  Oracle9i
  select last_name, dept_id
  from emp
  LEFT OUTER JOIN Dept
  ON e.dept_id = d.dept_id;
  
  RIGHT OUTER JOIN
  在RIGHT OUTER JOIN中返回的是表格中所有右边的行,甚至在被连接的表格中没有可配对的栏目的情况下也如此。在这个例子中,返回了所有部门的ID,包括那些没有一个雇员的的部门。 网管论坛bbs_bitsCN_com
  Oracle8i
  select last_name, d.dept_id
  from employees e, departments d
  where e.department_id(+) = d.department_id;
  
  Oracle9i
  select last_name, d.dept_id
  from employees e
  RIGHT OUTER JOIN departments d
  ON (e.department_id = d.department_id);
  
  
  总结
  
  ISO99标准是Oracle改进SQL工具的另一个例子。NATURAL JOIN LEFT OUTER JOIN 和 RIGHT OUTER JOIN是这些改进中最受欢迎的,它们分别简化了SQL句法以及消除了对于复杂句法(比如+)的需要。
  
  
TAGs   连接   JOIN   表格   from   select   OUTER   Oracle9i   返回   没有      
 上一篇:Oracle 10i First Release的新特性简介(下)   下一篇:在Oracle9i中定义视图约束
相关文章列表
Oracle9i 表连接 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
1.Oracle ERP系统月结与年结流程探讨
2.Oracle 10g,PostgreSQL 8,MySQL 5外围
3.Oracle11g的新特性-11g New Fe
4.ERP系统北京康宁光缆应用案例
5.主流开源数据库的技术特点点评
6.Oracle数据库10g产品特性简介
7.Oracle告诉你:什么是“Fusion”
8.理解Oracle的特色和选项
9.Oracle 10gas 基本管理指南
10.Oracle 10gas 之 data-source
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■