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

Oracle9i的简化SQL语法

2002-08-23  作者: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
  在Oracle中,CROSS JOIN产生了一个“卡迪尔的产物(Cartesian product)”,就象是在连接两个表格时忘记加入一个WHERE子句一样

网管bitscn_com


  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子句也不会有
  Oracle8i
  select dept_id, city
  from departments, locations 网管联盟bitsCN@com
  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
  and d.department_id = e.department_id;
  Oracle9i
  select emp_id, city_name, dept_name 网管u家www.bitscn.net
  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,包括那些没有一个雇员的的部门。
  Oracle8i
  select last_name, d.dept_id
  from employees e, departments d
  where e.department_id(+) = d.department_id; 网管朋友网www_bitscn_net
  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语法   简化   连接   表格   没有   返回   Oracle9i   Oracle8i   句法    
 上一篇:PL/SQL中调用Java源对象产生随机数   下一篇:全面探讨PL/SQL的复合数据类型
相关文章列表
Oracle9i的简化SQL语法 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.PL/SQL - 嵌套游标 cursor-PLSQL
2.用一个实例讲解Oracle数据库的PL/SQL语句
3.PL/SQL----触发器-PLSQL
4.mysql存储过程写法—动态参数运用-PLSQL
5.PL/SQL Developer导出分区索引脚本-PLSQL
6.PL/SQL collection— table() 函数-PLSQL
7.SQL Server 2005 中的架构与用户-PLSQL
8.Oracle数据库维护常用SQL语句集合(2)-P
9.Oracle数据库维护常用SQL语句集合(3)-P
10.再议SQL Server临时表和表变量-PLSQL
最新推荐文章:
1.与数据库无关的处理放到数据库以外来实现
2.Oracle 10g第2版新特性之SQL和PL/SQL
3.通过PL/SQL访问Web Services
4.菜鸟学oracle - 用PL/SQL画直方图
5.重新编译PLSQL中无效对象或指定对象
6.Oracle高级技巧
7.深入了解Oracle 10g新的多重集运算符
8.在SQL中删除重复记录(多种方法)
9.Oracle:PL/SQL中怎样使用Array
10.数据库手册:速查Oracle函数列表
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■