内容简介
本书从初学者的角度出发,以通俗易懂的语言,丰富多彩的实例,详细介绍了使用Oracle进行数据管理的各方面技术。全书共分16章,主要内容包括:Oracle11g关系数据库概述,Oracle数据库体系结构,使用SQL*Plus工具,SQL语言基础,多表查询,PL/SQL编程,管理控制文件和日志文件,管理表空间和数据文件,数据表对象,其他数据对象,用户管理与权限分配,数据导出和导入,使用RMAN工具,Oracle闪回技术,最后介绍基于Oracle数据库的Web应用实例——生产管理系统。
书中所有知识都结合具体实例进行介绍,让读者轻松领会Oracle管理数据库的精髓,快速提高数据库管理技能。另外,本书除了纸质内容之外,附带资源还给出了海量开发资源库。
本书针对的是初学者,适合作为高等院校数据库技术专业、信息管理与信息系统专业的教材。
第2版前言
Oracle数据库是由Oracle公司提供的数据库管理系统,凭借其优异的性能,在数据库市场的占有率远远超过其对手,始终位于数据库领域的领先地位。本书是针对Oracle 11g R2版本,但同样也适用于Oracle 12C版本。
Oracle(甲骨文)公司于1989年正式进入中国市场,创建了Oracle中国公司。为了帮助中国用户及时、充分地利用世界最先进的计算机软件技术与产品,Oracle中国公司在产品汉化方面投入了大量资源。目前,Oracle的大部分产品已实现了全面中文化,这对我们中国的程序人员来说是最激动人心的事情。
本书是针对Oracle Database 11g编写的,以Oracle数据库的常用知识点作为主要的介绍对象,并尽量避免一些生僻的理论知识,同时尽可能采用实例讲解,目的就是让读者轻松地进入Oracle的大门,为以后更深入的学习打好基础。
为了使读者由浅入深地掌握Oracle数据库的各方面技术,本书对第1版的章节进行了调整,另外根据实际应用的情况,本书删除了一些不太常用的知识点,最终希望读者轻松掌握Oracle数据库知识。
本书共分为16章,概要内容如下。
第1章:Oracle关系数据库。简单介绍什么是关系数据库,以及如何在Windows环境下正确安装Oracle Database 11g R2。
第2章:Oracle数据库体系结构。概要地介绍Oracle数据库的体系结构,包括物理存储结构、逻辑存储结构、Oracle进程结构,并对Oracle中的数据字典做了简单介绍,目的是让读者对Oracle数据库有一个整体的认识,为后面的学习做好铺垫。
第3章:使用SQL*Plus工具。介绍Oracle自带的SQL*Plus开发工具的使用,主要是对SQL*Plus中的一些常用命令进行讲解。
第4章:SQL语言基础。介绍Oracle数据库的SQL语言基础,包括基本的SELECT、INSERT、UPDATE和DELETE语句的使用,以及Oracle提供的一些函数应用,并在最后简单介绍了Oracle事务的处理。
第5章:多表查询。深入介绍SQL的多表查询,包括子查询、连接查询和集合操作。
第6章:PL/SQL基础。介绍PL/SQL程序块的构成、常量与变量的使用、条件循环语句的使用、游标的使用、异常的处理等。
第7章:存储过程、函数、触发器和包。介绍PL/SQL命名程序块,主要包括存储过程、函数、触发器和程序包。
第8章:管理控制文件和日志文件。介绍如何管理Oracle数据库系统的控制文件和日志文件,并介绍如何管理归档日志。
第9章:管理表空间和数据文件。介绍如何管理Oracle数据库中最大的逻辑存储结构——表空间,表空间在物理上对应Oracle的数据文件。Oracle表空间的类型有很多种,如基本表空间、临时表空间、撤销表空间等。
第10章:数据表对象。介绍数据库最基本的对象——表,以及针对表的完整性约束。
第11章:其他数据库对象。Oracle中除了基本的表以外,还有如视图、索引等数据库对象。本章介绍Oracle中的索引、视图、序列和同义词。
第12章:用户管理与权限分配。就Oracle数据库的安全管理方面进行讲解,主要内容包括数据库用户的创建与管理、Oracle中的权限与角色的授予与撤销。
第13章:数据导出和导入。介绍如何使用Oracle中的EXPDP/IMPDP工具对数据进行导出和导入。
第14章:使用RMAN工具。介绍如何使用恢复管理器(RMAN)实现数据库的备份与恢复。
第15章:Oracle闪回技术。为了让用户可以及时地获取误操作之前的数据,Oracle提供了各种闪回技术。本章重点介绍Oracle提供的闪回技术。
第16章:生产管理系统。本章以车辆营运企业的生产管理为环境,从实际应用的角度出发,以面向对象的方式分析、开发一个基于Oracle数据库的信息管理系统。
由于本书的编写时间仓促,而且作者水平有限,所以书中难免会存在不足之处,恳请广大读者批评与指正。
编 者
第1版前言
数据库在如今的各行各业中都有着举足轻重的地位,而Oracle数据库则是数据库系统中的佼佼者,其安全性、完整性、一致性等优点深受广大企业的青睐,所以它在数据库市场上占有的份额也远远超过其他数据库。因此,学好Oracle数据库也就成为众多程序开发人员的首选。
Oracle(甲骨文)公司于1989年正式进入中国市场,成为第一家进入中国的世界软件巨头,并创建了Oracle中国公司。为了帮助中国用户及时、充分地利用世界最先进的计算机软件技术与产品,Oracle中国公司在产品汉化方面投入了大量资源。目前,Oracle的大部分产品已实现了全面中文化,这无疑给中国的程序人员带来了极大的方便。
2007年7月12日,Oracle公司宣布推出Oracle最新版本——Oracle Database 11g,它在Oracle Database 10g的基础上新增加了400多项特性,使Oracle数据库变得更可靠、性能更好、更容易使用和更安全。
本书针对Oracle Database 11g编写,以Oracle数据库的常用知识点作为主要的介绍对象,并对生僻的知识采取简略甚至省略的态度,目的就是让读者轻松地叩开Oracle数据库的大门,为以后更深入的学习打下良好的基础。
本书共分为18章,主要内容如下。
* 第1章:Oracle关系数据库。简单介绍数据库关系理论,以及如何在Windows环境下正确安装Oracle Database 11g。
* 第2章:Oracle数据库体系结构。概要地介绍Oracle数据库的体系结构,包括物理存储结构、逻辑存储结构、Oracle进程结构,并对Oracle中的数据字典做简单的介绍,目的是帮助读者理解Oracle数据库,为后面的学习做好铺垫。
* 第3章:使用SQL*Plus工具。介绍Oracle自带的SQL*Plus开发工具的使用,主要是对SQL*Plus中的一些常用命令进行讲解。
* 第4章:管理表空间。介绍如何管理Oracle数据库中最大的逻辑存储结构——表空间。表空间的类型有很多种,如基本表空间、临时表空间、撤销表空间等。
* 第5章:模式对象。介绍表、表的完整性约束、索引、视图、序列和同义词使用。
* 第6章:管理控制文件与日志文件。介绍如何管理Oracle数据库系统的控制文件与日志文件,并介绍如何管理归档日志。
* 第7章:SQL语言基础。介绍Oracle数据库的SQL语言基础,包括DML语句的使用和函数的使用,并在最后简单地介绍Oracle事务的处理。
* 第8章:子查询与高级查询。深入介绍SQL查询,包括子查询与高级查询。
* 第9章:PL/SQL基础。介绍PL/SQL程序块的构成、常量与变量的使用、条件循环语句的使用、游标的使用以及异常的处理等。
* 第10章:存储过程、函数、触发器和包。介绍PL/SQL命名程序块,主要包括存储过程、函数、触发器和程序包。
* 第11章:其他表类型。Oracle中除了基本的堆表以外,还有其他类型的表。该章介绍Oracle中的临时表、外部表和分区表。
* 第12章:用户权限与安全。就Oracle数据库的安全管理方面进行讲解,主要内容包括数据库用户的创建与管理、Oracle中的权限与角色的授予和撤销。
* 第13章:SQL语句优化。为了提高应用程序的效率,用户应该对SQL语句进行优化,其所需要的成本最低,而往往影响又最大。该章将介绍部分SQL语句优化方式。
* 第14章:数据加载与传输。介绍如何使用Oracle中的数据泵技术对数据进行加载与传输。
* 第15章:使用RMAN工具。介绍如何使用恢复管理器(RMAN)实现数据库的备份与恢复。
* 第16章:Oracle Database 11g闪回技术。为了让用户可以及时地获取误操作之前的数据,Oracle提供了各种闪回技术。本章重点介绍Oracle Database 11g中的6种闪回技术。
* 第17章:宠物商店管理系统。以管理宠物商店的形式,从实际应用的角度出发,将Oracle数据库与JSP技术结合起来,为读者介绍Oracle数据库在Web程序中的应用效果。
* 第18章:通讯录。将实现Web通讯录,同样是结合Oracle数据库与JSP技术,目的是帮助读者巩固Oracle数据库的实际应用。
本书采取简明易懂的编写风格,并以实验指导的形式向读者介绍数据库的实际应用,帮助读者掌握一定的应用技巧。另外,为了帮助初学者培养良好的编程习惯,本书在编写代码时严格遵循代码规范,希望读者在自己的学习过程中也有良好的代码规范意识。
本书针对的是初学者,适合作为高等院校数据库技术专业、信息管理与信息系统专业的教材。
由于作者水平有限,书中难免会有不足之处,恳请广大读者批评指正。
编 者
目 录
第1章 Oracle关系数据库 11.1 关系数据模型 11.2 安装Oracle Database 11g 21.2.1 在Windows环境下的安装过程 21.2.2 Oracle服务管理 71.3 创建数据库 81.4 Oracle账户解锁 13第2章 Oracle数据库体系结构 152.1 物理存储结构 152.1.1 数据文件 152.1.2 控制文件 172.1.3 重做日志文件 172.1.4 其他文件 182.2 逻辑存储结构 192.2.1 表空间(Tablespace) 192.2.2 段(Segment) 202.2.3 区(Extent) 212.2.4 数据块(Block) 212.3 Oracle的进程结构 212.3.1 数据库写进程(DBWR) 212.3.2 重做日志写进程(LGWR) 222.3.3 校验点进程(CKPT) 222.3.4 系统监控进程(SMON) 232.3.5 进程监控进程(PMON) 232.3.6 归档日志进程 232.4 Oracle的内存结构 242.4.1 系统全局区(SGA) 242.4.2 程序全局区(PGA) 272.5 Oracle的服务器和实例 272.6 数据字典 282.6.1 Oracle数据字典介绍 282.6.2 Oracle常用的数据字典 292.7 习题 32第3章 使用SQL*Plus工具 343.1 SQL*Plus概述 343.1.1 SQL*Plus的主要功能 343.1.2 用SQL*Plus连接与断开数据库 353.2 使用SQL*Plus命令 373.2.1 使用DESCRIBE命令查看表结构 373.2.2 使用SQL*Plus语句快速编辑SQL语句 383.2.3 使用SAVE命令将缓冲区内容保存到文件中 403.2.4 使用GET命令读取文件内容到缓冲区中 413.2.5 使用START命令读取并运行文件内容 413.2.6 使用EDIT命令编辑缓冲区内容或文件内容 423.2.7 使用SPOOL命令复制输出结果到文件 423.2.8 使用临时变量 433.2.9 使用已定义变量 463.3 格式化查询结果 483.3.1 格式化列的显示效果 483.3.2 设置一页显示多少行数据 493.3.3 设置一行显示多少个字符 503.3.4 清除列格式 503.4 习题 51第4章 SQL语言基础 534.1 SQL语言概述 534.2 使用SELECT语句检索数据 544.2.1 基本的SELECT语句 544.2.2 WHERE子句 564.2.3 ORDER BY子句 584.2.4 DISTINCT关键字 584.3 使 用 函 数 604.3.1 字符串函数 604.3.2 数字函数 624.3.3 日期时间函数 634.3.4 转换函数 644.3.5 聚合函数 664.3.6 GROUP BY子句 674.3.7 HAVING子句 684.4 数据操纵语言(DML) 694.4.1 INSERT语句 694.4.2 UPDATE语句 714.4.3 DELETE语句 734.5 事务处理 744.5.1 事务的概念和特性 744.5.2 事务处理 744.6 习题 77第5章 多表查询 795.1 子查询 795.1.1 在WHERE子句中使用子查询 795.1.2 在HAVING子句中使用子查询 815.1.3 使用IN操作符处理多行子查询 825.1.4 使用ANY操作符处理多行子查询 835.1.5 使用ALL操作符处理多行子查询 845.1.6 实现多列子查询 845.1.7 实现关联子查询 855.1.8 实现嵌套子查询 865.2 连接查询 875.2.1 使用等号(=)实现多个表的简单连接 885.2.2 使用INNER JOIN实现多个表的内连接 895.2.3 使用OUTER JOIN实现多个表的外连接 925.2.4 使用CROSS JOIN实现交叉连接 945.3 集合查询 945.3.1 使用UNION操作符获取两个结果集的并集 955.3.2 使用INTERSECT操作符获取两个结果集的交集 955.3.3 使用MINUS操作符获取两个结果集的差集 965.4 习题 96第6章 PL/SQL基础 986.1 PL/SQL 986.1.1 PL/SQL程序块的基本结构 986.1.2 常量和变量 996.1.3 %TYPE类型和%ROWTYPE类型 1016.1.4 PL/SQL记录类型和表类型 1036.1.5 PL/SQL程序注释 1056.2 条件选择语句 1066.2.1 IF条件语句 1066.2.2 CASE表达式 1086.3 循环语句 1106.3.1 LOOP循环语句 1106.3.2 WHILE循环语句 1116.3.3 FOR循环语句 1116.4 游标 1136.4.1 显式游标 1136.4.2 隐式游标 1156.4.3 游标FOR循环 1166.4.4 使用游标更新数据 1166.5 异常 1176.5.1 异常处理 1176.5.2 预定义异常 1186.5.3 非预定义异常 1206.5.4 自定义异常 1216.6 习题 121第7章 存储过程、函数、触发器和包 1247.1 存 储 过 程 1247.1.1 创建与调用存储过程 1247.1.2 带参数的存储过程 1267.1.3 修改与删除存储过程 1297.1.4 查询存储过程的定义信息 1297.2 函数 1297.3 触发器 1317.3.1 认识触发器 1317.3.2 DML触发器 1327.3.3 INSTEAD OF触发器 1357.3.4 系统事件触发器 1367.3.5 DDL触发器 1377.3.6 禁用与启用触发器 1387.3.7 修改与删除触发器 1387.4 程序包 1387.4.1 创建程序包 1397.4.2 调用程序包中的元素 1407.4.3 删除程序包 1417.5 习题 141第8章 管理控制文件和日志文件 1438.1 管理控制文件 1438.1.1 查看控制文件 1438.1.2 控制文件的多路复用 1448.1.3 创建控制文件 1458.1.4 备份控制文件 1488.1.5 恢复控制文件 1498.1.6 删除控制文件 1508.2 管理重做日志文件 1508.2.1 获取重做日志文件信息 1508.2.2 增加日志组及其成员 1518.2.3 修改重做日志的位置或名称 1528.2.4 删除重做日志组及其成员 1548.2.5 切换日志文件组 1558.2.6 清空日志文件组 1568.3 管理归档日志文件 1568.3.1 数据库工作模式 1568.3.2 设置归档目录 1588.3.3 归档进程 1598.4 习题 160第9章 管理表空间和数据文件 1629.1 表空间与数据文件的关系 1629.2 Oracle的默认表空间 1639.2.1 SYSTEM表空间 1639.2.2 SYSAUX表空间 1649.3 创建表空间 1659.3.1 创建表空间的语法 1659.3.2 创建撤销表空间 1669.3.3 创建非标准块表空间 1679.3.4 建立大文件表空间 1689.4 维护表空间与数据文件 1709.4.1 设置默认表空间 1709.4.2 更改表空间的状态 1719.4.3 重命名表空间 1749.4.4 删除表空间 1759.4.5 管理表空间对应的数据文件 1769.5 管理临时表空间 1789.5.1 创建临时表空间 1789.5.2 查询临时表空间的信息 1799.5.3 关于临时表空间组 1799.6 习题 180第10章 数据表对象 18210.1 创建数据表 18210.1.1 数据类型 18210.1.2 创建数据表 18410.1.3 创建临时表 18510.1.4 DUAL表的作用 18710.2 维护数据表 18710.2.1 增加和删除列 18810.2.2 修改列 18910.2.3 重命名表和修改表的状态 19010.2.4 改变表空间 19110.2.5 删除表定义 19210.3 数据完整性和约束性 19210.3.1 非空(NOT NULL)约束 19210.3.2 唯一性(UNIQUE)约束 19310.3.3 主键(PRIMARY KEY)约束 19310.3.4 外键(FOREIGN KEY)约束 19410.3.5 条件(CHECK)约束 19410.3.6 禁用和激活约束 19510.3.7 删除约束 19610.4 习题 196第11章 其他数据库对象 19811.1 索引对象 19811.1.1 创建索引 19811.1.2 B树索引 20011.1.3 位图索引 20111.1.4 反向键索引 20211.1.5 基于函数的索引 20211.1.6 监控索引 20311.1.7 合并索引和重建索引 20411.1.8 删除索引 20511.2 视图对象 20511.2.1 创建视图 20611.2.2 对视图执行DML操作 20711.2.3 查询视图的定义信息 20911.2.4 视图的修改与删除 20911.3 序列对象 20911.3.1 创建和使用序列 21011.3.2 修改与删除序列 21211.4 同义词 21211.4.1 创建同义词 21311.4.2 删除同义词 21511.5 习题 215第12章 用户管理与权限分配 21712.1 用户与模式 21712.2 创建与管理用户 21812.2.1 创建用户 21812.2.2 修改用户 22012.2.3 删除用户 22212.3 用户配置文件 22212.3.1 创建用户配置文件 22212.3.2 使用配置文件 22512.3.3 修改与删除配置文件 22512.4 用户权限管理 22612.4.1 权限简介 22612.4.2 系统权限 22712.4.3 授予用户系统权限 22812.4.4 回收系统权限 22912.4.5 对象授权 23012.4.6 回收对象权限 23212.5 角色管理 23312.5.1 角色概述 23312.5.2 创建角色 23512.5.3 为角色授予权限 23512.5.4 授予用户角色 23712.5.5 修改用户的默认角色 23712.5.6 管理角色 23812.6 习题 240第13章 数据导出和导入 24313.1 EXPDP和IMPDP概述 24313.2 使用EXPDP导出数据 24413.2.1 导出数据前的准备 24413.2.2 执行导出命令 24513.2.3 导出参数 24813.3 使用IMPDP导入数据 25113.3.1 IMPDP命令参数 25213.3.2 实现数据导入 25413.4 使用EXPDP和IMPDP工具传输表空间 25813.5 SQL* Loader工具 26013.5.1 SQL* Loader概述 26013.5.2 加载数据 26213.6 习题 265第14章 使用RMAN工具 26714.1 RMAN简介 26714.2 建立RMAN到数据库的连接 26814.3 使用RMAN备份控制文件 26914.4 设置RMAN 27114.5 恢复目录 27414.6 RMAN的备份 27514.6.1 脱机备份 27614.6.2 联机备份整个数据库 27814.6.3 备份表空间 28014.6.4 备份数据文件 28014.6.5 增量备份 28114.6.6 镜像复制 28314.7 RMAN的恢复 28514.7.1 数据库非归档恢复 28514.7.2 数据库归档恢复 29014.7.3 数据块恢复 29114.8 备份维护 29214.8.1 VALIDATE BACKUPSET命令 29214.8.2 RESTORE VALIDATE命令 29314.8.3 LIST命令 29414.8.4 REPORT命令 29614.9 习题 298第15章 Oracle闪回技术 30015.1 闪回数据库 30015.1.1 闪回数据库概述 30015.1.2 闪回数据库技术应用 30315.2 闪回表 30515.2.1 闪回表概述 30515.2.2 使用闪回表 30615.3 闪回删除 30715.3.1 回收站概述 30715.3.2 闪回被删除的表 30915.3.3 恢复相关对象 31115.3.4 永久删除 31215.4 闪回版本的查询 31315.5 闪回事务的查询 31415.6 闪回数据的归档 31615.6.1 闪回数据归档区 31715.6.2 使用闪回数据归档 31815.6.3 清除闪回数据归档区数据 32115.7 习题 322第16章 生产管理系统 32416.1 开发背景与需求分析 32416.2 系统设计 32616.2.1 系统总体设计 32616.2.2 系统详细设计 32716.3 数据库设计 32816.3.1 设计数据库对象 32816.3.2 创建数据库对象 33316.4 用户界面设计 33416.4.1 用户登录页面 33516.4.2 主窗口设计 33716.4.3 用户管理页面 33816.5 数据访问层 33916.5.1 管理数据连接 33916.5.2 数据库访问模式 34116.6 安全模块 34316.6.1 用户登录 34316.6.2 用户管理 34716.7 资源管理模块 35016.7.1 人力资源的数据访问层技术分析 35016.7.2 人力资源的界面显示层技术分析 35516.8 营运管理模块 355附录 习题参考答案 358