
本书作者将多年的高校从事Oracle数据库教学的实际体会与在企业里进行数据库应用系统架构设计与开发的经验相结合,采用院校和企业联合编写的方式精心打造了本教材。书中全面系统地介绍、论述了Oracle数据库的相关原理、方案对象的创建、使用、管理方法和SQL及PL/SQL程序设计、应用优化等,全书共分为十一章。本书以实际数据库项目开发案例为驱动,将Oracle数据库的基本原理、技术特色和具体的软件开发案例相结合,在相关章节部分通过穿插案例的具体实现、加深读者对相关知识点的理解与技术应用体验。本书主要内容包括:关系数据库概述与Oracle安装、数据库建模工具ERwin、Power Designer使用,Oracle数据库体系结构 ,用户与权限管理,数据表及其管理、聚集表、分区表、临时表,数据查询,PL/SQL程序设计、存储过程、函数,索引、索引组织表、视图,物化视图、序列及同义词,事务与并发控制,触发器及应用、触发器变异的处理,Oracle安全策略、数据库备份与恢复,数据库部署、访问接口与调优,特别是访问接口与调优部分详细的介绍了ODBC API和JDBC API、OLEDB体系结构并分别以实例代码展示了这几种接口访问Oracle数据库的实现,结合具体案例给出了数据库性能优化的策略与方法。
数据库技术自从20世纪60年代中期问世以来,在过去的半个世纪里已经形成了坚实的理论基础,实现了成熟的商业产品,具有广泛的应用领域。数据库是计算机技术发展最快的领域之一,也是应用最广的技术之一。在互联网时代,数据库又迎来前所未有的机遇和挑战。
基于数据库的应用软件系统存储和管理数据的核心技术是运用数据库管理系统软件,它具有数据定义、数据操作、数据库运行管理和数据库维护、客户端工具软件等功能。近年来为了适应信息社会快速发展的需要,各种数据库管理系统不断升级换代,新技术不断出现。
Oracle作为一个通用的数据库系统,经过多年的发展,Oracle占据着企业数据库(大型数据库)领域超过48.1%的市场份额,成为高端企业数据库软件的绝对领导者。
从Oracle 8到Oracle 9i经历了4年,再到Oracle 10g又用了2年,然后是Oracle 11g又用了3年,2013年Oracle 12c发布、将云计算融入数据库中又用了6年的时间。在这些产品版本变化的过程中,从Oracle 10g开始融入了网格计算技术,这是一款继往开来的数据库产品。
在这些产品的不同版本之间向下兼容。不可否认,Oracle每推出一个新的版本,都会有新技术在里面体现,数据库管理系统的高级应用人员应该关注新的功能。但是,这作为面向高年级本科生的教材,在有限的课时内讲述的是如何基于大型数据库技术进行数据库的设计、创建与使用,其内容是大型数据库系统中最基本、最经典的知识和技术的运用。纵观Oracle的发展变化,从Oracle 8i开始,不同版本之间除产品安装略有不同外,各个版本的主要技术兼容性、参数文件、SQL*Net、SQL*Plus、网络配置文件、内存结构、数据库实例、事务机制、用户身份识别等概念变化并不大。因此,本教材在编写过程中充分淡化了Oracle具体版本的概念,以各版本通识性理论与技术介绍为主,结合作者在数据库应用项目开发方面的实践与长期的Oracle数据库教学体会进行内容的组织,目的是把Oracle数据库最通用的、应知应会的知识点介绍给广大读者。同时我们以实际案例驱动,在教材中充分体现了会在软件企业实际数据库项目开发中使用的数据库建模工具、数据访问接口,性能调优方面的经验总结等。教材相关章节的程序代码都可在Oracle 10g以上的系统中运行。
“Oracle数据库”是本科软件工程、计算机应用、信息管理与信息系统、电子商务类专业的一门专业课程,是一门集数据管理、数据库应用技术和计算机网络等多种知识为一体的课程。它以提高数据库设计、项目开发、管理信息系统应用水平为目的,对大型网络数据库进行规划、设计和应用系统开发。其主要内容包括: 关系数据库概述与Oracle安装,Oracle数据库体系结构,用户与权限管理,数据表及其管理,数据查询,PL/SQL程序设计,索引、视图、序列及同义词,事务与并发处理控制,触发器及应用,Oracle安全策略、数据库备份与恢复,数据库部署、访问接口与调优。
通过本课程的教学,着重培养学生运用Oracle数据库的能力。了解Oracle数据库的基本概念和体系结构,熟练掌握数据库SQL语言应用技能和复杂操作事项处理代码的编写技能,熟练掌握扩展SQL语言——PL/SQL语言及其设计方法,掌握Oracle数据库的管理方法和管理技术,提高大型分布式网络数据库的设计和应用水平。特别是高年级的本科生,认真研读与操练本书后可直接和软件开发企业的实际研发工作对接,至少在数据库应用方面做到学校所学知识和企业实际工作所需之间零盲区。
培养优秀的信息系统建设者和技术精湛的开发工程师是保证建设高质量、高可靠性信息系统的前提和基础。数据库技术在信息系统中有非常重要的作用, 海量数据存储、数据库安全、提高访问速度等与数据库技术密切相关。软件工程专业、计算机科学与技术专业的学生是数据库技术开发、应用的生力军; 信息管理与信息系统专业的学生是信息系统管理与信息技术的规划者与使用者。本书作者数十年来给软件工程专业和信息管理专业本科生和研究生主讲“Oracle数据库”课程。同时,作为Oracle认证的DBA和高级软件构架师,在多年的教学过程中,曾选用了不少相关Oracle类教材作为该课程的教科书,大部分教材写得都很好,也很有特色。然而,在教学实践中发现,这些教材都存在着一定的局限性。例如,有些基本是一个操作手册,无知识的系统性; 有些虽然给教材起名为Oracle数据库,但内容却是数据库原理的简单重复,没有反映出Oracle数据库独有的、各版本共同的特点,和一般的数据库原理教科书没什么区别,关键性知识点蜻蜓点水、忽略而过,无实际开发案例可言,更没有涉及大对象数据的管理与处理、图形图像、音频视频等多媒体数据的存储管理方面的内容。基于上述原因和课程教学改革与课时的限制,以大型数据库管理系统Oracle的基本原理和通识性技术为基础,结合软件企业实际开发所用技术自成体系、建设理论与实践兼备的“Oracle数据库”教材以满足应用型人才的培养是本书作者想要得到的结果。
本教材的特色如下。
1. 理论与实用技术并重
以Oracle数据库实用技术为主,兼顾理论。尤其是教材用例的选择,按照应用技能型专业人才培训目标、岗位需求和前后续课程的衔接关系,统筹取舍,删繁就简,做到理论简练,实用技术为主。
2. 以就业技能为导向
教材突出介绍Oracle数据库的主要通识性、实用技术,加强操作实现技能的实例编排,以现行工程实践中所使用的新技术应用为主,为就业铺垫。
3. 教材设计采用项目任务驱动
教材设计上以项目为驱动,体现了软件企业数据库项目开发过程中的需求分析、详细设计、平台选择、接口及编码实现、部署等环节,在教材的相关章节穿插了这些内容。
4. 校企联合编写
我们联合企业一线资深软件构架师、经验丰富的开发工程师,以Oracle数据库在软件项目中的应用为实例,给出了Oracle数据库技术在具体工程中的应用实现,使学生掌握怎样编写高效的SQL代码,怎样进行数据建模,怎样使用相关的数据访问接口。
本书得到了西安科技大学规划教材立项基金的支持。教材的第1~11章由岳国华编写,全书由岳国华统稿。西安科技大学计算机学院院长,博士生导师李占利教授对本书的编写给出了指导性建议,青海民族大学翟岁显教授、西安科技大学杨君锐教授分别详细地审阅了本书的全部手稿并提出了宝贵的建议; 无锡定华传感网科技有限公司资深工程师皇甫智勇提供了翔实的数据库开发案例及文档; 清华大学出版社,特别是贾斌编辑,对本书的出版给予了大力支持。在此,作者对他们表示深深的感谢。
Oracle数据库是Oracle公司的主打产品,Oracle“文化”可谓博大精深,本书以Oracle数据库通识性知识为主进行介绍,由于学时因素的限制,我们无法对一些不太常用的功能展开讨论,但有了书中的通识性知识结构可为读者进一步深入学习奠定良好的基础。
在本书的编写过程中,我们参考了众多的相关参考书、资料、Oracle公司的文档资料、CSDN.Net等网络资料,为了表示尊重和感谢,在本书的最后我们尽量列表说明,如有遗漏敬请谅解。另外,由于Oracle数据库技术发展迅速,我们虽已全面认真地对书稿进行了多次检查修改,但难免有错误和不妥之处,敬请读者批评指正。读者在使用本教材的过程中所发现的问题也可以直接和作者联系,作者电子邮箱: yueguohua@163.com。
岳国华
2017年夏于西安
第1章关系数据库概述与Oracle安装
1.1关系数据库概论
1.1.1关系数据库的相关概念
1.1.2SQL语言概述
1.2数据库的设计与规范化
1.2.1数据库设计的具体步骤
1.2.2数据库设计的范式理论(xNF)
1.3常用数据库建模工具介绍与案例
1.3.1ERwin简介
1.3.2Power Designer简介
1.3.3数据库建模案例(ERwin模型)
1.4Oracle数据库介绍
1.4.1Oracle数据库的发展
1.4.2Oracle数据库的系统结构
1.4.3Oracle 10g介绍
1.5Oracle的安装
1.5.1安装Oracle 10g的环境要求
1.5.2安装Oracle 10g
1.5.3检验安装是否成功
1.5.4Oracle数据库的默认用户
1.6Oracle系统配置与客户端工具
1.6.1数据库配置助手
1.6.2Oracle企业管理器(OEM)
1.6.3SQL*Plus与iSQL*Plus
1.6.4网络配置助手
1.7Oracle数据库的启动与关闭
1.7.1使用命令启动与关闭数据库
1.7.2使用OEM工具启动与关闭数据库
1.7.3开机后自动启动与关闭数据库
1.8Windows 7操作系统下安装Oracle 10g案例
1.9习题
第2章Oracle数据库体系结构
2.1Oracle数据库物理存储结构
2.1.1数据文件
2.1.2日志文件
2.1.3控制文件
2.1.4参数文件
2.2Oracle数据库逻辑存储结构
2.2.1表空间
2.2.2段
2.2.3盘区
2.2.4数据块
2.2.5逻辑存储结构相关视图
2.3Oracle数据库实例与结构
2.3.1进程结构
2.3.2内存结构
2.4Oracle网络配置文件
2.4.1客户端配置
2.4.2服务器端配置
2.5习题
第3章用户与权限管理
3.1用户与方案
3.1.1用户与方案的概念
3.1.2方案对象与非方案对象
3.2创建用户
3.2.1用SQL命令创建用户
3.2.2权限与角色
3.3系统权限管理
3.3.1系统权限分类
3.3.2系统权限的授权
3.3.3系统权限的回收
3.4对象权限管理
3.4.1对象权限分类
3.4.2对象权限的授权
3.4.3对象权限的回收
3.5角色管理
3.5.1角色概述
3.5.2系统预定义角色
3.5.3用户自定义角色
3.5.4删除角色
3.6管理用户
3.6.1使用SQL命令修改用户
3.6.2启用与禁用用户
3.6.3删除用户
3.7数据库概要文件
3.7.1数据库概要文件概述
3.7.2创建数据库概要文件
3.7.3管理数据库概要文件
3.7.4查看概要文件的信息
3.8习题
第4章数据表及其管理
4.1数据表与其存储的数据类型
4.1.1基本数据类型
4.1.2数据表的创建
4.1.3从原始表创建新表
4.1.4为表中字段指定默认值
4.1.5查看表结构的命令DESCRIBE
4.2表中数据增、删、改
4.2.1向表中新增数据(插入)
4.2.2修改表中的数据
4.2.3删除表中的数据
4.3表结构修改与删除表
4.3.1表结构修改
4.3.2删除表(摘除数据表)
4.4数据完整性与实现方法
4.4.1主键约束(PRIMARY KEY)
4.4.2非空值列约束(NOT NULL)
4.4.3唯一性约束(UNIQUE)
4.4.4检查约束(CHECK)
4.4.5外键约束(FOREIGN KEY)
4.5聚簇表
4.5.1创建聚簇
4.5.2创建聚簇表
4.5.3聚簇维护
4.5.4聚簇表数据块号查询
4.6分区表
4.6.1分区键
4.6.2分区表
4.7表中数据行结构
4.8Oracle临时表
4.8.1临时表的分类及操作
4.8.2临时表的用途
4.9数据表设计案例
4.10习题
第5章数据查询
5.1数据查询语句SELECT
5.1.1SELECT子句和FROM子句
5.1.2WHERE子句
5.1.3ORDER BY子句
5.1.4统计函数
5.1.5GROUP BY子句
5.1.6HAVING子句
5.2Oracle数据库中常用的内置SQL函数
5.2.1字符串处理函数
5.2.2数值运算函数
5.2.3日期和时间函数
5.2.4转换函数
5.3SQL*Plus查询输出结果格式化
5.3.1SQL*Plus环境中的常用格式化选项
5.3.2使用“环境”对话框设置格式化选项的值
5.3.3使用命令设置格式化选项的值
5.4SQL脚本文件的创建与执行
5.4.1创建SQL脚本文件
5.4.2执行SQL脚本文件
5.5多表连接查询
5.5.1内连接查询
5.5.2外连接查询
5.5.3交叉连接
5.6查询中的集合操作
5.6.1UNION集合运算
5.6.2INTERSECT集合运算
5.6.3MINUS集合运算
5.7子查询
5.7.1单行子查询
5.7.2多行子查询
5.7.3多列子查询
5.7.4相关子查询
5.7.5子查询在FROM子句中运用
5.8伪列在查询中的应用
5.8.1ROWID伪列
5.8.2ROWNUM伪列
5.8.3Oracle中的树形查询
5.9习题
第6章PL/SQL程序设计
6.1PL/SQL引擎
6.2PL/SQL程序结构
6.3变量与常量
6.3.1PL/SQL标识符
6.3.2PL/SQL中的数据类型
6.3.3变量与常量的定义
6.3.4为变量和常量赋值
6.3.5变量和常量的作用域
6.4主要SQL语句在PL/SQL程序中的使用
6.4.1SELECT语句在PL/SQL程序中的使用
6.4.2INSERT、UPDATE、DELETE语句在PL/SQL程序中的用法
6.4.3DCL语句在PL/SQL程序中的使用
6.4.4DDL语句在PL/SQL程序中的使用
6.5PL/SQL中的复合数据类型
6.5.1记录类型
6.5.2记录表类型
6.6用%TYPE和%ROWTYPE实现变量的柔性定义
6.6.1使用%TYPE定义简单变量
6.6.2使用%ROWTYPE定义记录变量
6.7PL/SQL中的流程控制语句
6.7.1条件选择语句
6.7.2循环语句
6.8游标及其应用
6.8.1显式游标
6.8.2带参数的游标
6.8.3隐式游标(SQL游标)
6.8.4使用游标更新表中的数据
6.9PL/SQL程序中的异常处理
6.9.1系统异常
6.9.2用户自定义异常
6.10存储过程与函数
6.10.1存储过程
6.10.2函数
6.11大对象数据操作
6.11.1LOB分类及定位器
6.11.2操作LOB数据的PL/SQL过程和函数
6.11.3LOB列初始化
6.11.4PL/SQL操作LOB案例
6.12PL/SQL调用Java方法
6.13习题
第7章索引、视图、序列及同义词
7.1索引及其应用
7.1.1Oracle支持的索引类型
7.1.2创建索引
7.1.3应用索引的因素
7.2索引组织化表
7.3与索引有关的主要系统视图
7.4视图及其应用
7.4.1使用视图的益处
7.4.2视图的应用
7.4.3重新编译视图与删除视图
7.4.4通过视图更新数据
7.5物化视图
7.6序列与同义词
7.6.1序列的使用与管理
7.6.2同义词的使用与管理
7.7习题
第8章事务与并发处理机制
8.1事务的概念
8.2事务特性
8.2.1事务的原子性
8.2.2事务的一致性
8.2.3事务的隔离性
8.2.4事务的持久性
8.3管理事务的命令
8.3.1COMMIT命令
8.3.2ROLLBACK命令
8.3.3SAVEPOINT和ROLLBACK TO SAVEPOINT命令
8.3.4SET TRANSACTION命令
8.3.5SET CONSTRAINT命令
8.4并发控制与锁机制
8.4.1关于并发的问题
8.4.2锁机制
8.5习题
第9章触发器及应用
9.1触发器概念与组成
9.2触发器的分类
9.3触发器的创建
9.3.1DML事件触发器的创建
9.3.2DDL事件触发器的创建
9.3.3替代触发器的创建
9.3.4用户事件触发器
9.3.5系统事件触发器
9.4触发器管理
9.5触发器应用
9.5.1数据库表主键自动填入
9.5.2触发器变异表处理
9.6习题
第10章Oracle安全策略、数据库备份与恢复
10.1Oracle安全策略
10.1.1Oracle数据库访问的身份验证
10.1.2Oracle数据访问安全的保障
10.2Oracle数据库备份与恢复机制
10.2.1数据库备份的重要性
10.2.2数据库备份的内容
10.2.3数据库备份的种类
10.2.4数据库备份中的保留策略
10.3数据库冷备份
10.3.1冷备份概述
10.3.2冷备份操作步骤
10.3.3冷备份恢复步骤
10.4数据库热备份
10.4.1热备份概述
10.4.2热备份操作步骤
10.5用EXP/IMP进行逻辑备份
10.5.1EXP导出数据
10.5.2IMP导入数据
10.6Oracle闪回技术
10.6.1闪回查询(Flashback Query)
10.6.2闪回删除(Flashback Drop)
10.6.3闪回数据归档(Flashback Data Archive )
10.6.4闪回数据库(Flashback Database)
10.7习题
第11章数据库部署、访问接口与调优
11.1数据库部署
11.1.1表空间规划与用户授权
11.1.2安装用户数据库对象
11.2ODBC接口访问Oracle
11.2.1ODBC体系结构
11.2.2Oracle ODBC数据源配置
11.2.3ODBC所需文件与执行流程
11.2.4ODBC数据类型与转换
11.2.5ODBCAPI函数
11.2.6C语言环境ODBC访问Oracle案例
11.3JDBC接口访问Oracle
11.3.1JDBC体系结构
11.3.2JDBC常用接口介绍
11.3.3使用JDBC的步骤
11.3.4Java语言环境JDBC访问Oracle案例
11.4OLEDB接口访问Oracle
11.4.1OLEDB体系结构
11.4.2C++通过OLEDB访问Oracle
11.5Oracle数据库应用性能调优
11.5.1系统架构及实现差异对系统性能的影响
11.5.2查询语句对系统性能的影响
11.5.3合理设计并利用索引
11.6习题
参考文献
以ORACLE数据库实用技术为主,兼顾理论。尤其是教材用例的选择,按照应用技能型专业人才培训目标、岗位需求和前后续课程的衔接关系,统筹取舍,删繁就简,做到理论简练,实用技术为主。
以ORACLE数据库实用技术为主,兼顾理论。尤其是教材用例的选择,按照应用技能型专业人才培训目标、岗位需求和前后续课程的衔接关系,统筹取舍,删繁就简,做到理论简练,实用技术为主。