前 言 本书重点阐述了Oracle数据库服务器的核心概念:数据库表、索引、表空间、约束、触发器和PL/SQL。掌握这些核心组件对应用程序开发至关重要。无论您是Web开发人员、客户机/服务器(C/S)程序员或者后台程序员,本书都将对您大有裨益。通过本书,您将学会如何用声明性约束和过程性约束在数据库服务器中实现逻辑,以及如何使用PL/SQL触发器和存储过程。 本书读者对象 本书针对程序员而编著。掌握一些编程知识将会对学习本书有所帮助,但不是必需的。学习本书之前不需要对Oracle有所了解。书中详尽的阐述、众多的图表和示例代码,会使那些从其他数据库转向Oracle的开发人员受益匪浅。书中有关触发器和PL/SQL的讨论是针对那些想快速地从其他编程范例模型转换到PL/SQL模型的程序员而精心设计的。本人曾经参与过和Oracle相关的项目,项目中往往有许多非Oracle数据库开发人员,因此经常会混淆部分术语。本书的一个重点就是解释基本范例,这对于初学者和有一定经验但需要交叉培训的开发人员来说都会有所帮助。 如果您原来使用非关系数据库,而现在转向Oracle,那么本书将会助您一臂之力。第1章阐述了SQL的起源。从事层次数据库和网络数据库的开发人员会发现他们可以用历史的眼光来全方位了解SQL。在我早年的职业生涯中,曾经有5年的时间从事层次数据库,3年的时间从事网络数据库。我理解为什么需要转向Oracle,本书将满足那些需要交叉培训的从事非关系数据库的开发人员的需求。 本书的第5章深入讨论了Oracle数据字典,喜欢钻研的开发人员将从中受益。该章描述了如何从数据字典中抽取约束定义。有兴趣的开发人员可以扩展这一简单技术以便从数据字典中抽取尽可能多的信息。这对那些如饥似渴的初学者大有好处。本书上一版的读者认为这是本书最有用的地方之一,因为它教会他们如何进行独立研究和学习。 开发人员往往需要在开发服务器上进行数据库管理。本书可作为数据库管理的初级教程。开发人员很自然需要和表、表空间等逻辑概念打交道。本书也用了较大的篇幅讨论数据库的物理概念,如表空间数据文件,这对那些需要了解Oracle构成的人来说也是一个很好的入门教材。 书中首先强调的是在Oracle数据库中建立业务逻辑。本书始终坚持的理念是让数据库为您工作和服务。一个能够很好利用声明性约束的团队能够创建出高度“智能化”的数据库,其中所有的数据都将符合严格的业务规则逻辑。而且,如果该团队将触发器和PL/SQL结合使用,则数据库完整性会进一步得到扩展,它将可以代替终端用户执行逻辑操作。包括复杂业务规则的实施和其他操作,如自动email通知,这将在第11章中讨论。 本书组织结构 第1、2章 第1、2章讨论Oracle表、列类型、如何使用SQL*Plus与数据库进行交互。描述了SQL*Plus十分有用的功能,包括用于显示SQL执行计划及其统计信息的SQL*Plus命令。这两章的重点是术语,解释了SQL、SQL*Plus和PL/SQL等术语的直观含义。 第3、4、5章 第3、4、5章全面探讨了声明性约束,包括从Oracle数据字典中抽取约束定义。这些章节包括:(a)将会告诉您如何创建具有高度完整性的数据库——这也是每个客户所期望的;(b)让您能够从数据字典中抽取众多信息——这是每个人都希望的本领;?让您能够深入洞悉声明性约束,并帮助您了解其工作机制。 第6、7、8章 第6、7、8章讨论了数据库触发器,也称为过程性约束。第6、7两章通过大量的图表来描述表行和语句级触发器,让您有一个直观的了解。这个直观了解对您选择触发器类型很关键。第8章描述了如何使用数据库触发器和PL/SQL来进行复杂规则的实施。 第9章 第9章有助于您迅速掌握PL/SQL程序的编译。建议您最好是边学习边编码。本章将帮助您了解PL/SQL编程环境。学完本章的内容之后,您将会基本了解如何进行编码、编译和执行PL/SQL过程。有关PL/SQL的技术性内容将在下面两章介绍,本章只介绍编码和测试的方法。 第10章 第10章将从软件工程的角度讨论PL/SQL。仅了解PL/SQL的语法并不够。在实际应用之前,我们需要了解PL/SQL范例和PL/SQL程序单元(过程、函数和程序包)模型。本章将从概念上向您介绍PL/SQL程序单元,并鼓励您在设计阶段思考在何时、如何使用这些程序单元。 第11章 第11章讨论了PL/SQL语言的功能。重点放在了PL/SQL结构和内置SQL函数上,并强调使用简单易懂的算法。本章最后一节描述了一个应用程序,该应用程序通过Oracle内置的Alerts程序包用一个数据库触发器发送email通知。 本书的所有程序脚本都在Oracle 9i Release 2和10g Version 10.1.0上运行通过。 本书约定 本书内容严格区分大小写形式,旨在增强其可读性和条理性。书中的SQL和PL/SQL代码除了关键字用大写外,其余均为小写。下面这行代码是从第3章选出来的,说明了这种行文风格。 ^………………….