本书是创建Oracle数据库和应用的最完整的参考书。书中循序渐进地讲述了关系数据库的概念及理论,并结合实例引导读者从开始的设计到完成最后的集成,最终创建一个完整的Oracle数据库系统。书中大多数资料对初学者创建Oracle数据库是必读的。另外, 本书还计论了Oracle8最新的特性。\r\n\r\n\r\n通过阅读本书,读 者可以学到如何进行PL/SQL编程,如何完善数据库设计以及如何在Internet或Web服务器上应用设计完善的数据库。总之,本书拥有了创建一个完整Oracle系统的全部资料。本书适合Oracle初学者,有经验的Oracle技术人员及大专院校师生阅读。\r\n\r\n
\r\n
贺辞\r\n序\r\n译者序\r\n引言\r\n第一部分 数据库对象的设计\r\n第1 章 Oracle工具介绍\r\n1.1 Oracle公司介绍\r\n1.2 Oracle 7——公司的数据库产品\r\n1.2.1 Oracle8——下一代数据库\r\n1.2.2 SQL*PLUS——Oracle的数据库语言\r\n1.2.3 其他Oracle产品\r\n1.2.4 Designer 2000\r\n1.2.5 Personal Oracle 7\r\n1.3 本书中的习惯用法以及技术术语\r\n1.4 小结\r\n第2章 数据库设计\r\n2.1 什么是关系型数据库\r\n2.2 数据库组件\r\n2.2.1 表空间\r\n2.2.2 表和字段\r\n2.2.3 索引\r\n2.2.4 视图\r\n2.2.5 同义词 \r\n2.2.6 授权与角色(Roles) \r\n2.3 关系数据库的设计\r\n2.3.1 数据库术语\r\n2.3.2 数据库设计的描述\r\n2.3.3 数据库表\r\n2.3.4 数据的规范化(Normalizing)\r\n2.4 小结\r\n2.5 我们还将学到\r\n2.6 习题\r\n2.7 雇员数据库项目第一阶段\r\n第3 章 使用Select 命令获取数据\r\n3.1 登录到SQL*PLUS\r\n3.2 SQL*PLUS编辑器\r\n3.3 Select命令格式详解\r\n3.3.1 Select子句\r\n3.3.2 From子句\r\n3.3.3 Where子句\r\n3.3.4 Group by 子句\r\n3.3.5 Having子句\r\n3.3.6 Order By子句\r\n3.3.7 简单的Select语句\r\n3.4 记录排序\r\n3.5 带条件的Select语句\r\n3.5.1 等于符(=)\r\n3.5.2 不等符(<>或!=)\r\n3.5.3 大于(>)和小于(<)\r\n3.5.4 使用IN操作符\r\n3.5.5 使用Retween操作符\r\n3.5.6 使用LIKE操作符\r\n3.5.7 使用NOT 操作符\r\n3.5.8 理解多重条件\r\n3.5.9 变量的使用\r\n3.5.10 字段的算术运算和连接字符串\r\n3.6 理解NULL值和表达式\r\n3.7 日期运算\r\n3.8 字符串函数\r\n3.8.1 Length函数\r\n3.8.2 Lpad函数\r\n3.8.3 Ltrim函数\r\n3.8.4 Rpad函数\r\n3.8.5 Rtrim函数\r\n3.8.6 Substr函数\r\n3.9 Decode函数\r\n3.10 数值函数的应用\r\n3.10.1 NVL函数\r\n3.10.2 Round函数\r\n3.10.3 Trune函数\r\n3.11 日期函数\r\n3.11.1 Add.Months函数\r\n3.11.2 Months.Between函数\r\n3.11.3 Next.Day函数\r\n3.12 日期描述符\r\n3.13 聚组函数\r\n3.13.1 Average函数\r\n3.13.2 Count函数\r\n3.13.3 多重聚组函数\r\n3.14 理解Group By函数\r\n3.15 理解Having子句\r\n3.16 理解子查询或子选择\r\n3.17 理解伪字段, dual表, Describe命令和Tab Table\r\n3.18 小结\r\n3.19 我们还将学到\r\n3.20 习题\r\n第二部分 使用SQL*PLUS对数据库进行操作\r\n第4章 SQL*PLUS中的报表设计\r\n4.1 创建报表标题\r\n4.2 创建一个报表的页脚\r\n4.3 报表的列的设计\r\n4.4 数字的格式设计\r\n4.5 页暂停的定义\r\n4.6 数据运算的定义\r\n4.7 设定环境\r\n4.8 小结\r\n4.9 我们还将学到\r\n4.10 习题 \r\n第5章 表及记录的连接\r\n5.1 在关系型数据库及对象数据库中进行数据的组合\r\n5.2 字段的限定\r\n5.3 应用多个连接\r\n5.4 一对多关系中表连接的错误\r\n5.4.1 表连接所引起的计算偏差\r\n5.4.2 当数值仅存在一个参加连接的表时所发生的问题\r\n5.4.3 发由数据格式不匹配而引起的性能问题\r\n5.5 外部连接\r\n5.6 集合操作符\r\n5.6.1 Union(并集)\r\n5.6.2 Ninus(差集)\r\n5.6.3 Intersect(交集)\r\n5.7 用Oracle 8组合数据\r\n5.8 小结\r\n5.9 我们还将学到\r\n5.10 习题\r\n第6章 数据库对象的定义\r\n6.1 定义表项\r\n6.2 表的创建 , 更改和删除\r\n6.3 表的修 改\r\n6.4 定义表的约束条件\r\n6.4.1 Check约束\r\n6.4.2 Default(默认)选项\r\n6.4.3 Foreign Key(外部关键字)约束\r\n6.4.4 Not Null(非空)约束\r\n6.4.5 Unique(唯一性)约束\r\n6.4.6 Primary Key(主关键字)约束\r\n6.4.7 约束的禁止(Disable)\r\n6.5 索引的定义\r\n6.6 视图的创建与删除\r\n6.7 创建同义词\r\n6.8 创建数据库链接\r\n6.9 创建用户帐号\r\n6.10 创建数据库权限\r\n6.11 对用户表授 予存取权\r\n6.12 创建表空间\r\n6.13 定义一个序列\r\n6.14 定义数据库触发展\r\n6.15 Oracle 8数据库对象\r\n6.15.1 修 改分区\r\n6.15.2 索引的分区\r\n6.15.3 创建类型\r\n6.15.4 使用Varray\r\n6.16 小结\r\n6.17 我们还将学到\r\n6.18 习题\r\n6.19 雇员数据库项目的第二阶段\r\n第7章 使用DML命令对表进行修改\r\n7.1 向表中添加记录\r\n7.2 更新表中的字段\r\n7.3 删除表中的记录\r\n7.4 保存修改结果\r\n7.5 小结\r\n7.6 我们还将学到\r\n7.7 习题\r\n第三部分 PL/SQL:Oracle的编程语言\r\n第8章 创建第一个PL/SQL程序\r\n8.1 如何理解PL/SQL\r\n8.1.1 理解PL/SQL块\r\n8.1.2 嵌套的块和块标号\r\n8.1.3 定义PL/SQL变量\r\n\r\n8.1.4 使用%TYPE和%ROWTYPE\r\n8.1.5 对变量进行赋值\r\n8.2 使用If-Then-Else逻辑\r\n8.2.1 使用嵌套的if语句\r\n8.2.2 在if语句中使用elseif\r\n8.3 使用循环和退出\r\n8.4 怎样理解PL/SQL游标\r\n8.5 确定例外事件\r\n8.6 记录并显示错误\r\n8.6.1 重新定义标准 错误事件的名称\r\n8.6.2 用于用户自定义的例外事件的Exception部分\r\n8.7 小结\r\n8.8 我们还将学到\r\n8.9 习题 \r\n第9章 增强PL/SQL块的功能\r\n9.1 游标属性的使用\r\n9.2 For循环的使用\r\n9.2.1 创建及使用对数字的For循环\r\n9.2.2 创建及使用对游标的for循环\r\n9.3 For Update Of的使用\r\n9.4 Where Current Of选项的使用\r\n9.5 被命名过程的创建及使用\r\n9.6 函数的创建及使用\r\n9.7 包的创建及使用\r\n9.7.1 包的结构\r\n9.7.2 创建一个包的定义\r\n9.7.3 包体部分的创建\r\n9.7.4 从应用程序中调用包的对象\r\n9.8 小结\r\n9.9 我们还将学到\r\n9.10 习题\r\n第10章 SQL*LOADER使用\r\n10.1 理解SQL*LOADER\r\n10.2 怎样启动SQL*LOADER\r\n10.3 各种加载文件的使用\r\n10.3.1 日志文件的使用\r\n10.3.2 坏记录文件的使用\r\n10.3.3 废弃记录文件的使用\r\n10.4 控制文件的定义\r\n10.4.1 简单控制文件的定义\r\n10.4.2 加载方式的定义\r\n10.4.3 数据格式的定义\r\n10.5 控制文件中逻辑条件的定义\r\n10.6 使用同一加载过程加载多个表\r\n10.7 其他控制文件的关键字和子句\r\n10.8 Option 子句和Recoverable/Unrecoverable子句\r\n10.8.1 Into Table子句\r\n10.8.2 Concatenation子句和Continueif子句\r\n10.9 从命令行中执行SQL*LOADER\r\n10.10 小结\r\n10.11 我们还将学到\r\n10.12 习题\r\n10.13 雇员数据库项目的第三阶段\r\n第四部分 Oracle的用户界面\r\n第11章 Oracle Forms的使用\r\n11.1 什么是Form?\r\n11.2 一个Form的例子\r\n11.3 Form的一些术语\r\n11.4 Developer 2000的Oracle Forms应用11.5 D Forms Runtime中执行一个Form\r\n11.6 Form操作模式\r\n11.6.1 Form的输入模式\r\n11.6.2 Form的查询模式\r\n11.6.3 Form的修改模式\r\n11.6.4 在一个Active Form中使用功能键\r\n11.7 在一个Active Form中查询一个记录\r\n11.8 其他Form过程\r\n11.8.1 置Form为输入模式\r\n11.8.2 修改结果的保存\r\n11.8.3 错误的显示\r\n11.9 小结\r\n11.10 我们还将学到\r\n11.11 习题\r\n第12章 利用对象导航器创建第一个Oracle Form\r\n12.1 进入Forms Designer\r\n12.2 对象导航器的使用\r\n12.2.1 对象的扩展与折叠\r\n12.2.2 在对象导航器中定义Form对象\r\n12.2.3 对导航器工具面板\r\n12.3 Forms Designer中的菜单选项\r\n12.3.1 File菜单项\r\n12.3.2 Edit菜单\r\n12.3.3 Tools菜单项\r\n12.3.4 Navigator菜单\r\n12.4 创建第一个Form\r\n12.4.1 创建一个简单的单块Form的步骤\r\n12.4.2 创建Form\r\n12.5 小结\r\n12.6 我们还将学到\r\n12.7 习题\r\n第13章 Form的设计\r\n13.1 版面编辑器\r\n13.2 版面编辑器的菜单条\r\n13.2.1 View下拉菜单\r\n13.2.2 Format(格式)下拉菜单的使用\r\n13.2.3 Amange(安排)下拉菜单的使用\r\n13.3 版面编辑器工具面板的使用\r\n13.3.1 选择(Select)工具\r\n13.3.2 旋转(Rotate)工具\r\n13.3.3 整形(Rohape)工具\r\n13.3.4 图形形状工具\r\n13.3.5 项(Item) 工具\r\n13.3.6 对象着色(Object Coloring)工具\r\n13.4 画板属性\r\n13.4.1 打开画板属性面(Shect)\r\n13.4.2 画板属性面(Sheet)\r\n13.4.3 复查与设定画板属性\r\n13.5 定义窗口(Windows)属性\r\n13.6 设计Emplyee Form\r\n13.7 小结\r\n13.8 我们还将学到\r\n13.9 习题\r\n第14章 创建及修改主-从(Master-Detail)Form\r\n14.1 将块添加到Employee Update Form中\r\n14.1.1 创建Tools从块\r\n14.1.2 块所对应的对象及其设定\r\n14.1.3 格式化Tools块\r\n14.1.4 创建Glasses块\r\n14.2 了解Form属性\r\n14.2.1 Coordinate Information属性\r\n14.2.2 使用Current Record Attribute(当前记录属性)\r\n14.2.3 定义一个可视属性(Attribue)\r\n14.3 了解块属性\r\n14.3.1 使用Order By和Where Clause 块属性\r\n14.3.2 改变Navigation Style\r\n14.4 了项属性(Item Properties)\r\n14.4.1 Multi-Line属性的使用\r\n14.4.2 关于一些实用的文本项属性的说明\r\n14.5 了解项类型\r\n14.5.1 检查框(check box)\r\n14.5.2 圆形按钮组(Radio Group)\r\n14.5.3 列表(List Item)项\r\n14.5.4 图像(Image)的使用\r\n14.6 创建List of Values\r\n14.6.1 LOV的调用\r\n14.6.2 能过按钮显示LOV\r\n14.6.3 调 整Record Group\r\n14.7 了解Relation(关系)属性\r\n14.8 小结\r\n14.9 我们还将学到\r\n14.10 习题 \r\n第15章 触发器的使用及属性类的修改\r\n15.1 什么是触发器\r\n15.1.1 触发器事件\r\n15.1.2 触发器名称\r\n15.1.3 触发器错误\r\n15.1.4 触发器的级别\r\n15.1.5 创建一个触发器\r\n15.2 PL/SQL编辑器的使用\r\n15.3 内置子程序的使用\r\n15.4 系统变量和全局变量的使用\r\n15.5 使用触发器和程序单元检查用户的安全措施\r\n15.5.1 Form安全触发器\r\n15.5.2 Form过程的使用\r\n15.6 在不基于表的块中文本项的添加和录入\r\n15.7 警告信息的使用\r\n15.8 利用触发器改变Form的画板\r\n15.9 属性类的使用\r\n15.10 创建. 修改以及使用属性类\r\n15.10.1 在同一时刻查看两个属性页\r\n15.10.2 Intersection/Union工具的使用\r\n15.11 小结\r\n15.12 我们还将学到\r\n15.13 习题\r\n第16章 调用其他的Forms及菜单的使用\r\n16.1 Form的调用\r\n16.1.1 Call_Form子程序的使用\r\n16.1.2 New_Form子程序的使用\r\n16.1.3 在Call_Form子程序中使用hide和no_hide选项\r\n16.2 创建及使用yDirectory\r\n16.2.1 创建一个Directory\r\n16.2.2 创建Employee Directory\r\n16.2.3 对Employee Directory进行操作\r\n16.2.4 从Employee Directory中调用其他的Forms\r\n16.3 创建及使用菜单将各个应用连接到一个系统中\r\n16.3.1 创建一个菜单\r\n16.3.2 创建并实现一个Employee System菜单\r\n16.3.3 开发一个系统启动(System Startup)应用\r\n16.4 创建一个工具条\r\n16.5 小结\r\n16.6 我们还将学到\r\n16.7 雇员数据库项目第四阶段\r\n第五部分 Oracle的报表书写器:Oracle Reports 2.5\r\n第17章 创建第一个报表\r\n17.1 打开Oracle Reports 2.5\r\n17.1.1 不指定报表名而打开Reports Runtime\r\n17.1.2 从Form中执行一个报表\r\n17.1.3 打开Reports Designer\r\n17.2 创建第一个报表\r\n17.2.1 创建一个简单报表的步骤\r\n17.2.2 创建一个Employee Listing(雇员列表)\r\n17.2.3 执行Employee Listing\r\n17.3 Designer菜单\r\n17.4 了解对象导航器\r\n17.4.1 对象导航器的对象\r\n17.4.2 对象导航器工具栏\r\n17.5 了解数据模型\r\n17.6 了解数据模型编辑器的Tools\r\n17.7 小结\r\n17.8 我们还将学到\r\n17.9 习题\r\n第18章 报表的用户化及高级报表功能\r\n18.1 概述Layout Editor对象\r\n18.2 版面编辑器的菜单项\r\n18.2.1 Edit(编辑)菜单项\r\n18.2.2 View(查看)菜单项\r\n18.2.3 Format(格式)菜单项\r\n18.2.4 Arrange(安排)菜单项\r\n18.3 版面编辑器的工具\r\n18.3.1 工具条\r\n18.3.2 工具面板\r\n18.4 版面对象属性\r\n18.4.1 公共属性页\r\n18.4.2 特殊属性项\r\n18.5 创建美观的报表\r\n18.5.1 更改不同对象的字体\r\n18.5.2 更改列标题的文本\r\n18.5.3 删除点状线以及线段变换\r\n18.5.4 添加一个报表标题\r\n18.5.5 添加页号和报表日期\r\n18.5.6 更改域 的位置\r\n18.5.7 格式化域 , 调整域 尺寸\r\n18.5.8 添加页首和结束页\r\n18.6 从零开始创建一个报表版面\r\n18.6.1 添加一个重复框架\r\n18.6.2 添加域到版面\r\n18.6.3 添加静态文本到版 面\r\n18.6.4 使框架更完美\r\n18.7 添加公式列和汇总列\r\n18.7.1 汇总列\r\n18.7.2 公式列\r\n18.8 小结\r\n18.9 我们还将学到\r\n18.10 习题\r\n第六部分 Web中的Oracle应用\r\n第19章 将Oracle应用放到Web中\r\n19.1 Web应用是怎样实现的\r\n19.1.1 三级Web存取的描述\r\n19.1.2 Web应用的优点\r\n19.2 所需软件及软件所安装的位置\r\n19.2.1 前端所需软件\r\n19.2.2 中间件或应用服务器的软件\r\n19.2.3 后端或数据库服务器的软件\r\n19.2.4 本章所用的软件配置\r\n19.3 在Web上建立Oracle Forms\r\n19.3.1 插件与非插件实现\r\n19.3.2 两种实现的通用设置\r\n19.3.3 插件实现的要求\r\n19.3.4 非插件的实现\r\n19.3.5 从Web中运行一个Form\r\n19.4 在Web上创建Oracle Reports\r\n19.4.1 为Web Reports设置Web Server\r\n19.4.2 Reports 的运行\r\n19.5 小结\r\n19.6 我们还将学到\r\n第七部分 完整的模板系统\r\n第20章 开发一个雇员信息系统的模 板系统\r\n20.1 第一阶段--数据库规范化和数据库设计\r\n20.2 第二阶段--创建数据库的对象\r\n20.3 第三阶段--将数据加载到数据库表中\r\n20.4 第四阶段--设计及开发用户界面\r\n20.4.1 Department Update Form(Deptupd. fmb)\r\n20.4.2 Employee Update Form(Empupd. fmb)\r\n20.4.3 Employee Directory Form(Empdir. fmb)\r\n20.4.4 Security Update Form(Empsec. fmb)\r\n20.4.5 Employee系统启动Form(Eemptup. fmb)和系统菜单(Esysmenu.mmb)\r\n20.5 第五阶段--开发并添加报表到该系统中\r\n20.6 小结\r\n第八部分 附录\r\n附录A 内置子程序\r\n附录B 触发器\r\n附录C 系统变量\r\n附录D 练习题数据库安装指导\r\n附录E 习题答案 \r\n
\r\n
译者序
在飞速发展的信息产业界, Oracle 算得上是“资深”的数据库了. 早在70 年代末它就推 出了关系数据库, 并提出开放性的概念, 使Oracle 成为第一个在不同平台上可运行的数据库产品, 从而极有预见性地领导着全球数据库技术的发展. 近二=十年来, Oracle 不断融会先进的技术, 逐渐形成一个极其强大的既灵活而又复杂的系统, 可用来构造从小型的信息系统到支持多个并发用户在大中型 应用项目. 可以说, Oracle 是目前世界上最流行的中大规模关系数据库. 在中国及至世界, Oracle 是建立大中规模数据库管理系统的数据库选型中主要的选择对象之一.
Oracle 的强大的功能来自于其允许用户快捷而准 确地进行了数据检索能力. 也来自于其强大的保证数据的完整性和一致性及维 护数据 的安全的能. 而最为重要的是, Oracle 充许软件开发者通过所提 供的工具可以快速地建立一个应用, 这是在它之前的关系数据库所从来没有做到的. Oracle 提供SQL *PLUS 使用户得以使用SQL 命令交互式地访问数据库. Oracle 提供SQL*Forms 使用户可以开发和执行基于表格(Form) 界面的应用程序. SQL *Writer 是一个强有力的报表式具软件, 可用来生成各种报表. 而SQL*Loader 工具则可以完成各类数据加载Oracle 表的任务.
本书作者在Oracle 开发与教 学上有十余年的经验, 在讲授"Oracle 系统开发”课程中, 苦于在众多的Oracle 书中尚找不到一本能够很好地指导学生利用Oracle 所提供的工具进行实际系统开发的书, 于是下决心利用自己多年的实践经验和教学中的心得体会编写了这本书.
我们很高兴能有机会及时地将这本书介缁给 大家, 作为Oracle 的老用户, 翻译完全书, 我们认为无论从深 度还是广度上来看, 本书都具有非常大的价值及用途.
概括来说, 本书主要具有如下的几个特点:
全面性, 本书作者不仅介绍了Oracle 的各种工具的使用, 而且讲述了关系数据库的一些概念, 并且将理论与实际相结合. 通过实例来介绍诸如数据规范化等理论.
广泛性, 本书不仅涉及一般 关系数据库应用的开发, 帮助初学者快速地建立自己的应用, 还包括了最新Oracle 的Web 应用, 帮助有经验的Oracle 开发者将其应用移到Web 上去.
先进性, 本书所涉及的Oracle 产品都是已经发展成熟的, 且在各行各业广泛使用着的产品. 包括Oracle 不断地融会计算机业最新的技术, 开发Windows 界面的应用, 以及将应用扩展到Web 上, 从而使该书的应用在技术上个有延续性.
实用性, 本书从头开始, 按数据库开发的阶段逐一向读者进行介绍, 并给 出实例供读者参考及练习. 事实上, 到了本书的末尾就已经形成了一个真正可实际操作的较大型 数据 库的模 板. 对开发者来说, 数据 库管理 系统的开发是大同小民的, 有这样一个模 板进行参考将极大地提高开发设计的效率.
该书针对于Oracle 的各级用户. 对初学者可以从理论到实践上帮助他们从入门到精通:对有经验的开发者可以在开发的细节上, 在更深 一层的应用中大有裨益.
在经过近三个月艰苦的翻译劳动之后, 我们虽有如释重负的心情, 但捧着厚厚厚的书稿, 却又忐忐不安, 但愿本书为广大的读者在Oracle 开发中带来真正的帮助, 从而使作者, 编者和译得的心血不至白费.
由于我们虽然参与Oracle 开发, 但掌握的程序有限, 书中翻译如有不当之处, 恳请读者批评指正.
本书由刘丽, 罗含主译, 张东吉校对. 参加翻译的还有:李新, 张军翼, 王毅, 王盛弘, 赵斌. 张美祥, 邹连顺老师在本书的翻译过程中给予我们很大帮助, 再此表示感谢.
译者
1998 年5 月