`
senton
  • 浏览: 205834 次
  • 性别: Icon_minigender_1
  • 来自: 紫禁城
社区版块
存档分类
最新评论

Oracle9i的简化SQL语法

阅读更多

Oracle9i的简化SQL语法
 
 

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句法以及消除了对于复杂句法(比如+)的需要。 

分享到:
评论

相关推荐

    Introduction To ORACLE9i:SQL2

    根据提供的文件信息,我们可以从中提炼出与Oracle 9i SQL2相关的多个重要知识点。下面将对这些知识点进行详细的阐述。 ### Oracle 9i SQL2简介 #### 1. Oracle 9i SQL2背景 Oracle 9i SQL2是Oracle公司推出的一款...

    Oracle9i_SQL与PLSQL使用参考

    ### Oracle9i SQL与PL/SQL使用参考:深入解析与应用指南 #### 一、Oracle数据库基础概览 Oracle9i作为一个重要的企业级数据库系统,其核心能力在于提供高效的数据存储与检索服务。《Oracle9i_SQL与PLSQL使用参考》...

    基于oracle9i讲解SQL语言(来自网络)PDF中文教程

    Oracle 9i在SQL的基础上增加了许多高级特性,如PL/SQL(Oracle的存储过程语言)和事务管理等,使得数据库管理更为高效和灵活。 **第1章 关系数据库与SQL语言环境** 在这一章节中,我们将学习关系数据库的基本概念...

    sybex_OCA&OCP Introduction to Oracle9i SQL Study Guide.pdf

    《Oracle9i SQL入门指南》是Sybex出版社推出的一本专门针对Oracle数据库初学者及认证考试(OCA&OCP)的教材。这本书详细介绍了Oracle9i版本的SQL语言,帮助读者掌握在数据库管理中必备的基础知识和技能。下面将从几...

    oracle9i310.rar

    "oracle9i310.rar" 是一个压缩包,其中包含了Oracle 9i的简化客户端版本,适用于在虚拟机、老旧计算机或Windows XP系统上运行。由于其资源占用较小,因此特别适合这些环境下使用,同时也能连接到更高版本的Oracle...

    oracle 9i sql手册

    Oracle 9i SQL手册是针对Oracle 9i数据库系统的一份详细参考资料,它涵盖了SQL语言在Oracle环境中的各种使用和操作。SQL(Structured Query Language)是用于管理关系数据库的标准编程语言,而Oracle 9i是Oracle公司...

    EditPlus Oracle 9i语法文件

    在EditPlus中,`9i_r2_sql.stx` 文件是一种自定义语法文件,用于为Oracle 9i SQL提供语法高亮和格式化支持。STX文件是EditPlus的语法规则文件,它们定义了特定编程语言或脚本语言的语法结构,使用户在编辑时可以更...

    OCP-007 Introduction to Oracle 9i SQL Study Guide.pdf

    通过阅读《OCP-007 Introduction to Oracle 9i SQL Study Guide》,读者不仅可以系统学习Oracle 9i的SQL语法和数据库管理知识,还能为参加OCP认证考试做好充分准备,提升在实际工作中解决数据库问题的能力。

    Introduction To ORACLE9i:SQL1

    - **Introduction to ORACLE9i:SQL1**:此标题表明文档将介绍Oracle 9i数据库系统的SQL(Structured Query Language)基础。 #### 描述解析: - **和同学找的ocp中文教程**:说明这份文档可能是为了备考Oracle ...

    introduction_to_oracle9i:sql

    通过学习本教程,你可以掌握Oracle9i SQL的基本语法和高级特性,为日常数据库管理和开发工作打下坚实基础。参考D33051.pdf和D33052.pdf中的内容,将帮助你深入理解并实践这些知识,从而在Oracle认证考试中取得优异...

    oracle9i客户端精简免安装.rar

    本压缩包“oracle9i客户端精简免安装.rar”是专为Windows操作系统设计的Oracle9i客户端版本,旨在简化Oracle数据库的管理和操作,让用户无需进行复杂的安装过程即可快速使用。 Oracle9i客户端主要包括以下几个关键...

    Oracle 9i SQL Reference

    《Oracle 9i SQL Reference》是Oracle公司发布的一本详细阐述9i版本SQL语言的官方文档,对于理解和使用Oracle数据库系统具有重要的参考价值。在Oracle 9i中,SQL(Structured Query Language)作为数据管理和查询的...

    Oracle9i+PL_SQL从入门到精通

    PL/SQL部分,书籍可能会详细阐述PL/SQL语法,包括变量声明、流程控制语句(如IF-THEN-ELSE、CASE)、循环结构(如WHILE、FOR)、异常处理和游标操作。此外,还会涵盖如何编写存储过程、函数、包,以及触发器的使用,...

    40060GC10 - Oracle9i:SQL for End Users.zip

    "40060GC10 - Oracle9i:SQL for End Users"这个压缩包显然是一套针对初学者的教程,旨在帮助他们理解并掌握如何在Oracle 9i环境中使用SQL。 首先,我们来看一下压缩包中的文件名,它们似乎代表了一系列的课程或...

    Introduction_To_ORACLE9i_SQL2

    接着,深入到SQL语法,包括数据查询语言(DQL)、数据操纵语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)的核心概念。DQL主要用于查询数据,例如SELECT语句;DML涉及数据的插入、更新和删除;DDL用于创建和...

    oracle9i SQL 教程

    4. **练习与答案**:文档"oracle9i sql 试卷.doc"提供了练习题目,帮助检验学习效果,而"Answer.doc"则提供了解答,方便自我检查和理解。 通过这个教程,你可以系统地学习Oracle 9i SQL,理解其语法、功能和最佳...

    Introduction_To_ORACLE9i_SQL3

    Oracle 9i是Oracle公司的一个重要版本,它在数据库性能、可扩展性和安全性上都有显著提升,因此,掌握其SQL语法对于理解后续版本的Oracle数据库也大有裨益。 SQL(Structured Query Language)是用于管理关系数据库...

Global site tag (gtag.js) - Google Analytics