网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.在redhat 9 上安装oracle 9.2.0..
.如何使用Oracle全文检索功能.
.浅析Oracle和SqlServer存储过程的.
.Oracle PL/SQL入门之慨述.
.Oracle9i RMAN备份及恢复步骤.
.配置RMAN恢复目录.
.案例讨论:Oracle两表连接.
.如何在WINDOWS 2000将ORALCE完全.
.在Linux下安装Oracle.
.Oracle中管理物化视图变得更加容.
.oracle 使用杂记一.
.Oracle 8 的函数介绍.
.oracle10g初始化参数说明二.
.关于shared pool的深入探讨(一).
.Oracle数据库的安全策略全面解析.
.如何加快ORACLE本地OCI的调用速度.
.oracle的字段类型.
.图文:详解数据库Oracle 11g的基.
.Oracle面试时候的几个常见的技术.
.如何快速查找文件.

Oracle9i表连接

发表日期:2008-2-9



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子句一样 
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 
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 
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; 

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句法以及消除了对于复杂句法(比如+)的需要。
上一篇:9i新特性之四缩小非计划当机时间 人气:546
下一篇:Oracle Application Serve 人气:1147
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐