
本书以Oracle 11g为写作蓝本,从Oracle数据库最基础的知识讲起,逐一对Oracle 11g数据库的安装与卸载、数据库体系结构、SQL*Plus工具的使用、数据库对象的管理、Oracle数据库中SQL语句的使用及优化、Oracle的高级编程、包、游标、存储过程、函数和触发器,以及Oracle数据库的安装管理、备份/恢复、数据的导入/导出等内容做了全面介绍。最后还对实际开发案例进行了分析和介绍。
通过对本书内容的学习,可以为以后Oracle数据库的管理和开发打下坚实的基础。本书既可作为相关培训班和高等院校的教材使用,也可作为Oracle数据库爱好者的学习手册。
前 言
数据库在当今各行各业中具有举足轻重的地位。在各个公司的数据管理系统中,Oracle数据库是其中的佼佼者,它在数据库管理中的安全性、完整性、一致性和可恢复性等方面的优点是其他数据库管理系统所无法比拟的。同时,Oracle数据库与程序开发语言Java结合较好。所以Oracle数据库的学习是众多数据库管理人员和开发人员的首选。
Oracle公司在2007年7月12日宣布推出了新版本—— Oracle 11g,它在原来Oracle 10g的基础上增加了400多项新特性,使Oracle数据库比原来更加易用、安全和可靠。
本书以Oracle 11g版本为写作基础,从Oracle数据库最基础的知识讲起,逐一对其各个知识点的理论和应用做了全面的介绍。通过对本书内容的学习,可以为以后管理和开发Oracle数据库打下坚实的基础。
1. 本书特点
本书深入浅出地对Oracle数据库的基础知识、Oracle数据库的常用操作、Oracle数据库的日常管理、Oracle数据库的应用开发等内容进行了详细的介绍。在讲解基础知识的同时,还结合这些知识点进行案例的讲解,这些案例代码在Oracle 11g中均进行了运行和演示,读者可以参照练习。在每章的结尾,结合该章的内容,为读者提供了上机练习。
本书主要特点体现在以下几个方面:
? 体系结构合理。结构安排采用循序渐进的方式,全书大致可分为基础篇、操作篇、提高篇、管理篇和应用篇。
? 理论与实际相结合。在每章的知识讲解后,都有相应的案例讲解,在掌握理论的基础上,与实际操作相结合。
? 丰富的素材和完整的视频。对每章中的操作代码和案例程序代码,读者均可实际运行和练习。同时,还专门录制了学习视频,以帮助读者更好地学习本书。
2. 本书内容
本书可分为5篇,共18章,从Oracle数据库安装讲起,接下来是Oracle的相关概念,以及Oracle的相关工具的使用、Oracle数据库的编程、Oracle数据库的管理和Oracle数据库的应用等知识。
第一篇(包括第1~3章)为数据库基础篇,讲述主流的数据库版本和特点,以及Oracle 11g的版本和特点,然后讲解在Windows 7下如何安装Oracle 11g数据库,以及Oracle数据库本身的体系结构等。
第二篇(包括第4~7章)为数据库的操作篇,主要讲述Oracle数据库中的重要工具SQL*Plus的使用和设置,以及数据库中对象的创建,数据库、表、视图和索引等的创建,然后讲解数据库中SQL语句的使用及优化等。
第三篇(包括第8~10章)为数据库的提高篇,主要讲解Oracle的高级编程,包括游标、存储过程、函数和触发器等相关知识。
第四篇(包括第11~15章)为数据库的管理篇,主要讲述数据库安全管理中的用户、角色和权限的管理。在此基础上进一步讲解数据库的备份与恢复,数据库的逻辑备份与导入导出,以及RMAN工具的使用,最后讲解数据库的闪回操作等。
第五篇(包括第16~18章)为数据库应用篇,主要讲述如何进行Oracle数据库的开发。首先讲解如何进行数据库的连接,以及数据库连接常用的工具等知识。接着在此基础上讲解详细的开发案例。
3. 适用群体
本书适合以下读者阅读:
? 希望学习Oracle数据库的新手。
? 想进行Oracle数据库管理和开发的人员。
? 在项目开发中用到Oracle数据库的人员。
? 各类大中专院校和培训机构。
本书由徐飞、苗凤君两位老师编著,韩玉民、郑彬彬、夏敏捷、高艳霞等老师也参与了部分章节的编写。同时,在该书出版过程中,曹培培、胡文华、胡娜、蒋军军、尼春雨、任海峰、任海香、王国胜、王梦迪、石翠翠、张石磊、张丽、张班班等人参与了本书的资料整理、审校排版、视频录制等工作,在此一并表示感谢。
由于作者水平有限,书中难免有疏漏之处,恳请广大读者批评指正。
编 者
目 录
第1 章 Oracle 11g数据库简介 1
1.1 主流数据库简介 2
1.1.1 主流数据库 2
1.1.2 主流数据库的特点 3
1.2 Oracle 11g数据库概述 4
1.2.1 企业版 5
1.2.2 标准版 5
1.2.3 标准版1 5
1.2.4 精简版 5
1.3 Oracle 11g的新特性 5
1.3.1 数据库管理方面的新特性 6
1.3.2 PL/SQL的新特性 7
1.3.3 其他方面的主要新特性 9
1.3.4 Oracle 11g R2的
主要新特性 10
1.4 上机练习 11
第2章 Oracle 11g数据库的
安装和卸载 13
2.1 Oracle 11g的安装准备 14
2.1.1 Oracle 11g安装的硬件需求 14
2.1.2 Oracle 11g安装的软件需求 14
2.2 Oracle 11g数据库的安装 14
2.2.1 Oracle 11g的安装过程 15
2.2.2 Oracle 11g的常用服务 19
2.3 Oracle 11g常见工具的启动 21
2.3.1 Oracle 11g企业管理器的
启动 21
2.3.2 SQL*Plus的启动 22
2.4 Oracle 11g数据库的卸载 23
2.5 上机练习 26
第3 章 Oracle 11g数据库体系结构 27
3.1 Oracle数据库的物理结构 28
3.1.1 数据文件 28
3.1.2 控制文件 30
3.1.3 重做日志文件 32
3.2 Oracle数据库的逻辑结构 34
3.2.1 表空间(Tablespace) 35
3.2.2 段(Segment) 39
3.2.3 区间(Extent) 41
3.2.4 数据块(Data Block) 41
3.3 Oracle数据库的内存结构 42
3.3.1 系统全局区 42
3.3.2 程序全局区 45
3.4 Oracle数据库的进程 46
3.4.1 进程监控进程(PMON) 46
3.4.2 系统监控进程(SMON) 46
3.4.3 日志写入进程(LGWR) 47
3.4.4 归档进程(ARCn) 47
3.4.5 检查点进程(CKPT) 47
3.4.6 恢复进程(RECO) 48
3.5 上机练习 48
第4 章 SQL*Plus工具的使用 49
4.1 SQL*Plus概述 50
4.1.1 SQL*Plus的主要功能 50
4.1.2 SQL*Plus的启动 50
4.1.3 SQL*Plus的退出 52
4.2 SQL*Plus的常用命令 52
4.2.1 describe命令 53
4.2.2 prompt命令 54
4.2.3 define和accept命令 54
4.2.4 替换变量 56
4.2.5 show命令 58
4.2.6 save命令 59
4.2.7 get命令 60
4.2.8 edit命令 61
4.2.9 @命令 61
4.2.10 spool命令 62
4.2.11 start命令 62
4.3 SQL*Plus格式化查询结果命令 63
4.3.1 SQL*Plus环境的设置 63
4.3.2 行设置命令linesize 65
4.3.3 页面设置命令pagesize 66
4.3.4 列设置命令column 66
4.3.5 分屏显示控制命令pause 68
4.3.6 报表页眉页脚设置命令
ttitle和btitle 68
4.3.7 统计计算:
break和compute 69
4.4 其他缓存区编辑命令 70
4.5 上机练习 71
第5章 数据库及数据库对象管理 73
5.1 数据库管理 74
5.1.1 创建数据库 74
5.1.2 删除数据库 83
5.1.3 启动数据库 85
5.1.4 改变数据库启动模式(状态) 88
5.1.5 关闭数据库 88
5.2 表管理 91
5.2.1 数据类型 91
5.2.2 创建表 94
5.2.3 修改表 98
5.2.4 删除表 99
5.2.5 表数据更新 100
5.2.6 定义数据完整性 101
5.3 视图管理 105
5.3.1 创建视图 106
5.3.2 应用视图 108
5.3.3 修改视图 108
5.3.4 删除视图 109
5.4 索引管理 110
5.4.1 创建索引 110
5.4.2 应用索引 112
5.4.3 修改索引 112
5.4.4 删除索引 112
5.5 上机练习 114
第6章 SQL语言基础 115
6.1 SQL语言概述 116
6.1.1 SQL语言的功能 116
6.1.2 SQL语言的特点 117
6.1.3 PL/SQL与SQL的关系 118
6.2 数据定义 118
6.3 数据操纵 118
6.4 数据控制 119
6.5 基本数据查询 119
6.5.1 数据查询基本结构 119
6.5.2 简单查询 120
6.5.3 使用WHERE子句进行
筛选 122
6.5.4 使用ORDER BY子句进行
查询的排序 124
6.5.5 使用GROUP BY子句进行
分组查询 124
6.5.6 使用HAVING子句对分组
进行筛选 125
6.5.7 使用INTO子句将查询结果
存储到表中 125
6.5.8 常见函数的使用 126
6.6 高级数据查询 144
6.6.1 多表连接查询 144
6.6.2 嵌套查询 147
6.6.3 集合操作 150
6.7 上机练习 150
第7章 SQL语句优化 153
7.1 SQL语句使用技巧 154
7.1.1 不用“*”代替所有列名 154
7.1.2 在确保完整性的情况下
多用COMMIT语句 155
7.1.3 尽量用WHERE语句
代替HAVING 155
7.1.4 用TRUNCATE
代替DELETE 156
7.1.5 尽量使用表连接来
代替表的多次查询 157
7.1.6 用EXISTS代替IN 158
7.1.7 用EXISTS代替DISTINCT 159
7.1.8 使用“<=”代替“<” 160
7.1.9 使用指定的详细列名 161
7.2 表的连接方法 161
7.2.1 选择FROM后表的顺序 161
7.2.2 WHERE子句的连接顺序 162
7.3 有效地使用索引 163
7.3.1 索引列上操作符的使用 163
7.3.2 唯一索引列上不要使用
NULL值 164
7.3.3 选择复合索引主列 165
7.3.4 避免对大表的全表扫描 165
7.3.5 监视索引是否被使用 166
7.4 上机练习 166
第8章 PL/SQL编程基础 167
8.1 PL/SQL概述 168
8.1.1 PL/SQL的基本结构 168
8.1.2 PL/SQL的结构示例 168
8.1.3 PL/SQL的程序注释 169
8.2 PL/SQL常量和变量的定义 170
8.2.1 PL/SQL的字符集 170
8.2.2 数据类型 171
8.3 条件语句 177
8.3.1 IF条件语句 177
8.3.2 CASE条件语句 178
8.4 循环语句 180
8.4.1 LOOP循环语句 180
8.4.2 WHILE循环语句 182
8.4.3 FOR循环 182
8.5 上机练习 183
第9章 PL/SQL高级编程 185
9.1 游标 186
9.1.1 定义游标 186
9.1.2 打开游标 186
9.1.3 从游标获取数据 187
9.1.4 关闭游标 188
9.1.5 游标FOR循环 189
9.1.6 隐式游标 190
9.2 游标属性 191
9.3 包 194
9.3.1 创建包 194
9.3.2 调用包 196
9.3.3 删除包 197
9.4 异常信息 197
9.4.1 异常处理 197
9.4.2 预定义异常 197
9.4.3 自定义异常 199
9.5 上机练习 200
第10 章 存储过程、函数和触发器 201
10.1 存储过程 202
10.1.1 创建存储过程 202
10.1.2 调用过程 206
10.1.3 带参数的存储过程 206
10.1.4 删除存储过程 211
10.2 函数 212
10.2.1 创建函数 212
10.2.2 调用函数 216
10.2.3 删除函数 218
10.3 触发器 218
10.3.1 触发器概述 218
10.3.2 创建触发器 219
10.3.3 触发器的维护 225
10.3.4 删除触发器 226
10.3.5 三种方法的区别与比较 226
10.4 上机练习 227
第11章 数据库安全管理 229
11.1 Oracle数据库安全性概述 230
11.1.1 Oracle 11g的安全性体系 230
11.1.2 Oracle 11g的安全性机制 230
11.2 用户 231
11.2.1 创建用户 231
11.2.2 修改用户 235
11.2.3 删除用户 237
11.3 权限 237
11.3.1 系统权限 238
11.3.2 对象权限 241
11.4 角色 242
11.4.1 角色分类 242
11.4.2 创建角色 243
11.4.3 为角色授权 244
11.4.4 为用户授予角色 244
11.4.5 管理角色 245
11.4.6 与角色相关的数据字典 246
11.5 上机练习 247
第12 章 备份与恢复 249
12.1 备份与恢复概述 250
12.1.1 备份的原则和策略 250
12.1.2 恢复的原则和策略 250
12.2 备份与恢复的分类 251
12.2.1 备份分类 251
12.2.2 恢复分类 252
12.3 备份和恢复的方法 253
12.3.1 冷备份的实施 253
12.3.2 热备份的实施 254
12.3.3 冷备份的恢复 256
12.3.4 热备份的恢复 257
12.4 上机练习 261
第13章 逻辑备份/数据的导入导出 263
13.1 Data Pump概述 264
13.2 创建 265
13.3 Data Pump导出数据 266
13.3.1 EXPDP的3种调用接口 266
13.3.2 EXPDP的5种调用模式 267
13.3.3 导出参数说明 269
13.4 Data Pump导入数据 271
13.4.1 IMPDP的3种调用接口 271
13.4.2 IMPDP的5种调用模式 271
13.4.3 导入参数说明 273
13.5 EXP/IMP导出导入数据 275
13.5.1 EXP导出数据 275
13.5.2 IMP导入数据 277
13.6 上机练习 280
第14章 使用RMAN工具 281
14.1 RMAN概述 282
14.1.1 RMAN的特点 282
14.1.2 RMAN的基本概念 282
14.1.3 RMAN中的组件 283
14.2 RMAN备份准备操作 284
14.2.1 将数据库设置为归档
日志模式 284
14.2.2 创建恢复使用的
表空间 285
14.2.3 创建RMAN用户并授权 286
14.2.4 创建恢复 286
14.2.5 连接到目标数据库 287
14.2.6 设置RMAN 289
14.2.7 通道分配 291
14.3 RMAN备份 292
14.3.1 BACKUP命令 292
14.3.2 完全备份 293
14.3.3 增量备份 293
14.3.4 备份表空间 295
14.3.5 备份控制文件 296
14.3.6 备份归档日志 296
14.3.7 镜像复制 296
14.3.8 BACKUP的冷备份与
热备份 297
14.3.9 查看备份信息 298
14.4 RMAN恢复数据库 299
14.4.1 数据库的非归档恢复 299
14.4.2 数据库的归档恢复 303
14.4.3 数据块的恢复 304
14.5 上机练习 304
第15章 Oracle闪回技术 305
15.1 闪回技术概述 306
15.1.1 闪回恢复区的作用 306
15.1.2 配置闪回恢复区 306
15.2 闪回数据库 308
15.2.1 闪回数据库的设置 308
15.2.2 使用闪回数据库 310
15.3 闪回表 313
15.4 闪回回收站 315
15.4.1 禁用启用回收站 315
15.4.2 查看回收站中的信息 316
15.4.3 清除回收站中的对象 317
15.4.4 闪回回收站中的对象 317
15.5 闪回版本查询 318
15.6 闪回事务查询 320
15.7 闪回数据归档 322
15.7.1 闪回数据归档 322
15.7.2 闪回数据归档区 323
15.7.3 为表指定闪回数据归档区 325
15.7.4 使用闪回数据归档区 326
15.7.5 清除闪回数据归档区数据 326
15.8 上机练习 327
第16 章 Oracle数据库的连接 329
16.1 ADO.NET概述 330
16.2 ADO.NET中的对象 330
16.2.1 Connection对象 332
16.2.2 Command对象 334
16.2.3 DataReader对象 337
16.2.4 DataAdapter对象 338
16.2.5 DataSet对象 338
16.2.6 DataTable对象 340
16.3 数据绑定技术 341
16.3.1 数据绑定简介 341
16.3.2 简单数据绑定示例 341
16.3.3 复杂数据绑定示例 345
16.4 存储过程应用案例 349
16.4.1 存储过程简介 349
16.4.2 存储过程的应用 350
16.5 上机练习 354
第17章 仓库管理信息系统 355
17.1 系统要求 356
17.2 需求分析 356
17.3 系统设计 358
17.4 数据库设计 359
17.4.1 数据库概念结构设计 359
17.4.2 数据库逻辑结构设计 361
17.4.3 数据库物理结构设计 363
17.5 系统设计与实现 365
17.5.1 开发工具和环境 365
17.5.2 关键代码 365
17.6 本章小结 381
第18章 图书馆管理系统 383
18.1 系统概述 384
18.2 需求分析 384
18.3 数据库分析与设计 386
18.3.1 E-R图分析 387
18.3.2 数据库的逻辑设计 388
18.4 程序结构框图 389
18.5 详细设计 390
18.5.1 登录窗口 390
18.5.2 主界面 392
18.5.3 图书管理 395
18.5.4 读者管理 409
18.5.5 图书流通管理 418
18.5.6 系统管理 427
18.6 本章小结 435