第一篇 基础知识篇 2
第1章开启数据库之门 2
1.1认识数据库 2
1.1.1数据库的发展史 2
1.1.2数据库系统的组成 3
1.1.3什么是数据库管理系统 3
1.2研究关系型数据库的基本理论 3
1.2.1关系型数据库与数据库管理系统 4
1.2.2关系型数据库的E-R模型 5
1.2.3关系型数据库的设计范式 6
1.3 小结 9
1.4习题 9
第2章 踏上Oracle的征程 10
2.1 Oracle的成长历程 10
2.2展示Oracle 11g的新特性 12
2.3安装与卸载Oracle 11g 13
2.3.1 Oracle 11g的安装 13
2.3.2 Oracle 11g的卸载 20
2.4 Oracle 11g的管理工具 23
2.4.1 SQL*Plus工具 23
2.4.2 Oracle企业管理器 24
2.4.3数据库配置助手 25
2.5启动与关闭数据库实例 26
2.5.1启动数据库实例 26
2.5.2关闭数据库实例 28
2.6上机实践 29
2.6.1通过DBCA创建一个数据库 29
2.6.2 以ABORT方式关闭数据库 31
2.7 小结 31
2.8 习题 32
第3章 Oracle 11g身世解密——体系结构 33
3.1 简述Oracle 11g体系结构 33
3.2解密逻辑存储结构 34
3.2.1 数据块(Data Blocks) 34
3.2.2数据区(Extent) 35
3.2.3段(Segment) 36
3.2.4表空间(TableSpace) 36
3.3剖析物理存储结构 38
3.3.1数据文件 38
3.3.2控制文件 40
3.3.3 日志文件 41
3.3.4服务器参数文件 43
3.3.5密码文件、警告文件和跟踪文件 44
3.4剖析Oracle 11g服务器结构 46
3.4.1 系统全局区(SGA) 46
3.4.2程序全局区(PGA) 49
3.4.3前台进程 49
3.4.4 后台进程 50
3.5窥探数据字典的秘密 53
3.5.1 Oracle数据字典简介 53
3.5.2 Oracle常用数据字典 53
3.6上机实践 55
3.6.1查询数据库中所有段的存储空间 55
3.6.2查询数据库所使用的数据文件 56
3.7小结 56
3.8 习题 56
第4章发号施令——SQL*Plus命令 58
4.1 SQL*Plus与数据库的交互 58
4.2设置SQL*Plus的运行环境 59
4.2.1 SET命令简介 59
4.2.2 使用SET命令设置运行环境 61
4.3解读常用的SQL*Plus命令 65
4.3.1 HELP命令 65
4.3.2 DESCRIBE命令 66
4.3.3 SPOOL命令 68
4.3.4其他常用命令 69
4.4格式化查询结果 71
4.4.1 COLUMN命令 71
4.4.2 TTITLE和BTITLE命令 74
4.5上机实践 76
4.5.1 使用set newpage命令修改指定数量的空行 76
4.5.2使用TEXT值列替换NULL值列 77
4.6 小结 77
4.7 习题 77
第5章神兵利器——SQL语言的基本操作 79
5.1 SQL语言简介 79
5.1.1 SQL语言的特点 79
5.1.2 SQL语言的分类 80
5.1.3 SQL语言的编写规则 80
5.2认识用户模式 81
5.2.1模式与模式对象 82
5.2.2示例模式SCOTT 82
5.3检索数据 83
5.3.1简单查询 83
5.3.2筛选查询 87
5.3.3 分组查询 92
5.3.4排序查询 94
5.3.5多表关联查询 94
5.4操作数据库 99
5.4.1插入数据(INSERT语句) 99
5.4.2更新数据(UPDATE语句) 101
5.4.3删除数据(DELETE语句和TRUNCATE语句) 102
5.5上机实践 103
5.5.1统计某一个部门的雇员的最高和最低工资 103
5.5.2创建employees表的一个副本 104
5.6 小结 104
5.7习题 104
第6章更上一层楼——SQL语言的复杂操作 105
6.1 Oracle常用系统函数 105
6.1.1字符类函数 105
6.1.2数字类函数 108
6.1.3 日期和时间类函数 109
6.1.4转换类函数 110
6.1.5聚合类函数 111
6.2子查询的用法 112
6.2.1什么是子查询 112
6.2.2单行子查询 113
6.2.3多行子查询 113
6.2.4关联子查询 114
6.3事务处理 115
6.3.1事务概述 115
6.3.2操作事务 116
6.4上机实践 118
6.4.1把系统日期格式转换为“YYYYMMDD”格式 118
6.4.2查询工资小于平均工资的员工信息 118
6.5 小结 119
6.6习题 119
第二篇 核心技术篇 122
第7章 必须知道的PL/SQL编程 122
7.1 什么是PL/SQL 122
7.1.1 PL/SQL块结构 122
7.1.2代码注释和标识符 124
7.2数据类型、变量和常量 125
7.2.1基本数据类型 125
7.2.2 特殊数据类型 126
7.2.3定义变量和常量 129
7.3控制程序走向——流程控制语句 130
7.3.1添加选择语句 130
7.3.2循环控制语句 133
7.4 PL/SQL游标 136
7.4.1 设置显示游标 136
7.4.2游标的常用属性 138
7.4.3 设置隐式游标 139
7.4.4通过for语句遍历游标 140
7.5 PL/SQL异常处理 141
7.5.1 预定义异常 142
7.5.2自定义异常 143
7.6上机实践 145
7.6.1判断用户是否可以申请退休 145
7.6.2使用游标读取员工信息 146
7.7 小结 147
7.8习题 147
第8章 自给自足——创建存储过程、函数、触发器和程序包 148
8.1 PL/SQL程序块——存储过程 148
8.1.1存储过程的创建 148
8.1.2存储过程的几种模式参数 150
8.1.3熟悉IN参数的默认值 154
8.2 函数的使用 155
8.2.1函数的创建 155
8.2.2函数的调用 156
8.2.3函数的删除 157
8.3特殊的存储过程——触发器 157
8.3.1触发器概述 157
8.3.2语句级触发器 158
8.3.3行级触发器 161
8.3.4替换触发器 162
8.3.5用户事件触发器 164
8.4程序包的使用 165
8.4.1程序包的规范 166
8.4.2程序包的主体 167
8.5 上机实践 168
8.5.1调用存储过程计算平方或平方根 168
8.5.2通过程序包调用存储过程和函数 169
8.6 小结 170
8.7习题 170
第9章 宏观调控——控制文件和日志文件 171
9.1管理控制文件 171
9.1.1控制文件概述 171
9.1.2控制文件的多路复用 172
9.1.3控制文件的创建 174
9.1.4备份和恢复控制文件 177
9.1.5控制文件的删除操作 179
9.1.6查询控制文件的信息 179
9.2管理重做日志文件 180
9.2.1重做日志文件概述 180
9.2.2 增加日志组及其成员 182
9.2.3重做日志的删除 183
9.2.4更改重做日志文件的位置或名称 184
9.2.5查看重做日志文件信息 185
9.3管理归档日志文件 186
9.3.1 日志模式分类 186
9.3.2管理归档操作 187
9.3.3 设置归档日志文件位置 188
9.3.4查看归档日志信息 190
9.4 上机实践 192
9.4.1为数据库实例添加重做日志文件组 192
9.4.2查看并修改数据库归档模式 192
9.5小结 193
9.6习题 193
第10章 数据核心区——表空间和数据文件 194
10.1表空间与数据文件的关系 194
10.2 Oracle 11g的默认表空间 195
10.2.1 Oracle数据字典——SYSTEM表空间 195
10.2.2 SYSTEM的助手——SYSAUX表空间 196
10.3表空间的创建 197
10.3.1创建表空间的语法 197
10.3.2通过本地化管理方式创建表空间 198
10.3.3 通过段空间管理方式创建表空间 199
10.3.4创建非标准块表空间 200
10.3.5建立大文件表空间 200
10.4维护表空间与数据文件 201
10.4.1 设置默认表空间 201
10.4.2更改表空间的状态 202
10.4.3重命名表空间 202
10.4.4删除表空间 203
10.4.5维护表空间中的数据文件 203
10.5撤销表空间的使用 205
10.5.1撤销表空间的作用 205
10.5.2撤销表空间的初始化参数 206
10.5.3关于撤销表空间的几种操作 206
10.6 临时表空间的使用 210
10.6.1临时表空间的创建 210
10.6.2查询临时表空间的信息 211
10.6.3 临时表空间组的使用 211
10.7上机实践 213
10.7.1创建并设置默认永久表空间 213
10.7.2创建并设置默认临时表空间 214
10.8 小结 215
10.9习题 215
第11章数据之家——数据表对象 216
11.1数据表概述 216
11.2数据表的创建 216
11.2.1数据表的逻辑结构 217
11.2.2创建数据表 218
11.2.3 庖丁解牛——数据表的特性 219
11.3管理维护数据表 224
11.3.1增加和删除字段 224
11.3.2修改字段 226
11.3.3重命名数据表 227
11.3.4改变表空间和存储参数 227
11.3.5删除数据表 228
11.3.6修改数据表的状态 229
11.4数据的完整性和约束性 231
11.4.1非空约束 231
11.4.2主键约束 232
11.4.3 唯一性约束 234
11.4.4外键约束 235
11.4.5禁用约束 237
11.4.6激活约束 238
11.4.7删除约束 239
11.5上机实践 239
11.5.1将创建的数据表置于指定的表空间中 239
11.5.2为指定的数据表创建主键约束 240
11.6 小结 241
11.7习题 241
第12章 不可不看的其他数据对象 242
12.1 索引对象——快速查找记录 242
12.1.1 索引概述 242
12.1.2创建索引 243
12.1.3 对索引进行修改 248
12.1.4索引的删除操作 249
12.1.5显示索引信息 249
12.2视图对象——存储查询的虚拟表 252
12.2.1创建视图 252
12.2.2视图的管理操作 255
12.3 同义词对象——保护对象的安全 257
12.4 序列对象——提供唯一的主键值 259
12.4.1创建序列 259
12.4.2 序列的管理操作 261
12.5上机实践 262
12.5.1 创建数据表并添加索引 262
12.5.2通过序列对象为数据表添加数据 262
12.6小结 263
12.7习题 264
第13章 数据检索目录——表和索引的分区 265
13.1 分区技术概述 265
13.2常见的几种表分区 266
13.2.1 RANGE分区——范围分区 266
13.2.2 HASH分区——散列分区 268
13.2.3 LIST分区——列表分区 269
13.2.4 多重复用——组合分区 270
13.2.5范围分区的升级——Interval分区 271
13.3关于表分区的策略 272
13.4表分区的管理 272
13.4.1添加表分区 272
13.4.2合并表分区 273
13.4.3删除表分区 273
13.4.4并入表分区 275
13.5索引分区的使用 276
13.5.1索引分区概述 276
13.5.2本地索引分区的使用 276
13.5.3全局索引分区的使用 278
13.6索引分区的管理 278
13.6.1 索引分区管理的操作列表 278
13.6.2索引分区管理的实际操作 279
13.7上机实践 280
13.7.1 根据指定字段创建多个列表分区 280
13.7.2根据表分区创建本地索引分区 280
13.8 小结 281
13.9习题 281
第14章 居安思危——管理用户与权限 283
14.1 了解用户与方案 283
14.2创建与管理用户 284
14.2.1身份验证 284
14.2.2创建用户 285
14.2.3修改用户 287
14.2.4删除用户 288
14.3用户权限管理 288
14.3.1了解权限 288
14.3.2授权操作 289
14.3.3 回收系统权限 290
14.3.4对象授权 291
14.3.5回收对象权限 291
14.3.6查询用户与权限 292
14.4角色管理 292
14.4.1认识角色 293
14.4.2预定义角色 293
14.4.3创建角色与授权 295
14.4.4管理角色 296
14.4.5角色与权限查询 297
14.5 资源配置PROFILE 298
14.5.1 什么是PROFILE 299
14.5.2使用PROFILE管理密码 299
14.5.3使用PROFILE管理资源 301
14.5.4 维护PROFILE文件 302
14.5.5显示PROFILE信息 303
14.6上机实践 304
14.6.1创建一个用户 304
14.6.2创建一个角色 305
14.7小结 305
14.8习题 306
第三篇 高级应用篇 308
第15章 合理优化Oracle系统 308
15.1 调整初始化参数 308
15.1.1 Oracle初始化参数分类 308
15.1.2 主要系统调优参数介绍 308
15.2 系统全局区(SGA)优化 310
15.2.1 解内存分配 310
15.2.2调整日志缓冲区 311
15.2.3调整共享池 313
15.2.4调整数据库缓冲区 316
15.2.5 SGA调优建议 316
15.3排序区优化 316
15.3.1排序区与其他内存区的关系 317
15.3.2 理解排序活动 317
15.3.3专用模式下排序区的调整 318
15.3.4共享模式下排序区的调整 320
15.4上机实践 321
15.4.1修改large_pool_size的值并查看修改结果 321
15.4.2查询高速缓存在调用阶段的“不命中数” 321
15.5小结 322
15.6习题 322
第16章 SQL语句的优胜劣汰 323
16.1 优化常规SQL语句 323
16.1.1建议不用“*”来代替所有列名 323
16.1.2 使用TRUNCATE代替DELETE 323
16.1.3在确保完整性的情况下多用COMMIT语句 324
16.1.4尽量减少表的查询次数 324
16.1.5用[NOT]EXISTS代替[NOT]IN 325
16.2优化表连接 325
16.2.1驱动表的选择 325
16.2.2 WHERE子句的连接顺序 326
16.3合理使用索引 326
16.3.1何时使用索引 326
16.3.2索引列和表达式的选择 326
16.3.3选择复合索引主列 327
16.3.4避免全表扫描大表 327
16.3.5监视索引是否被使用 327
16.4优化器的使用 328
16.4.1优化器的概念 328
16.4.2运行EXPLAIN PLAN 329
16.4.3 Oracle 11g中SQL执行计划的管理 329
16.5数据库和SQL重演 330
16.5.1数据库重演 330
16.5.2 SQL重演 330
16.6 Oracle的性能顾问 331
16.6.1 SQL调优顾问 331
16.6.2 SQL访问顾问 331
16.7上机实践 331
16.7.1使用TRUNCATE语句清空指定数据表 331
16.7.2监视主键索引是否被使用 332
16.8小结 333
16.9习题 333
第17章 安全保障——数据备份与恢复 334
17.1 了解备份与恢复 334
17.2 RMAN工具简介 335
17.2.1 RMAN组件 335
17.2.2 RMAN通道 337
17.2.3 RMAN命令 339
17.3使用RMAN工具实现备份 341
17.3.1 RMAN备份策略 341
17.3.2使用RMAN备份数据库文件和归档日志 342
17.3.3增量备份 344
17.4使用RMAN工具实现完全恢复 345
17.4.1恢复处于NOARCHIVELOG模式的数据库 345
17.4.2恢复处于ARCHIVELOG模式的数据库 347
17.5使用RMAN工具实现部分恢复 348
17.5.1基于时间的不完全恢复 348
17.5.2基于更改的不完全恢复 349
17.6上机实践 351
17.6.1使用RMAN工具备份表空间 351
17.6.2使用RMAN工具还原备份的表空间 352
17.7 小结 353
17.8习题 353
第18章 游刃有余——数据导出和导入 354
18.1数据泵技术概述 354
18.2使用EXPDP导出数据 354
18.2.1执行EXPDP命令 355
18.2.2 EXPDP命令参数 357
18.3使用IMPDP导入数据 359
18.3.1执行IMPDP命令 359
18.3.2 IMPDP命令参数 360
18.4使用SQL*Loader工具加载外部数据 362
18.4.1初识SQL*Loader工具 362
18.4.2加载多种格式的数据 362
18.5上机实践 365
18.5.1 使用EXPDP导出指定的数据表 365
18.5.2使用IMPDP导入指定的数据表 365
18.6 小结 366
18.7习题 367
第19章 穿越时空——闪回技术 368
19.1了解闪回技术 368
19.2闪回数据库技术 368
19.2.1闪回恢复区配置 369
19.2.2闪回数据库配置 369
19.2.3闪回数据库技术应用 371
19.3 闪回表技术 372
19.3.1 闪回表命令的语法 372
19.3.2 闪回表的应用 373
19.4 闪回丢弃技术 374
19.4.1回收站简介 374
19.4.2 回收站的应用 374
19.5其他闪回技术 376
19.5.1 闪回版本查询 376
19.5.2闪回事务查询 376
19.5.3闪回数据归档 377
19.6上机实践 377
19.6.1使用闪回丢弃还原已经drop掉的表 377
19.6.2使用闪回表命令清除记录 378
19.7 小结 379
19.8习题 379
第四篇 项目实战篇 382
第20章 基于Oracle数据库的企业人事管理系统 382
20.1需求分析 382
20.2系统设计 382
20.2.1 系统目标 382
20.2.2系统功能结构 383
20.2.3系统业务流程图 383
20.2.4系统编码规范 384
20.3 系统开发及运行环境 384
20.4数据库与数据表设计 384
20.4.1实体E-R图设计 385
20.4.2数据库逻辑结构设计 386
20.5系统文件夹组织结构 387
20.6公共模块设计 387
20.6.1编写Hibernate配置文件 387
20.6.2编写Hibernate持久化类和映射文件 388
20.6.3编写通过Hibernate操作持久化对象的常用方法 389
20.6.4创建用于特殊效果的部门树对话框 390
20.6.5创建通过部门树选取员工的面板和对话框 391
20.7 Hibernate关联关系的建立方法 393
20.7.1 建立一对一关联 393
20.7.2建立一对多关联 394
20.8主窗体设计 396
20.8.1实现导航栏 396
20.8.2实现工具栏 398
20.9人事管理模块设计 400
20.9.1实现上传员工照片功能 401
20.9.2实现组件联动功能 404
20.9.3 通过Java反射验证数据是否为空 405
20.10待遇管理模块设计 406
20.10.1 实现建立一个新的账套 407
20.10.2实现为新建的账套添加项目 408
20.10.3实现修改项目的金额 409
20.10.4实现统计报表 411
20.11系统维护模块设计 412
20.11.1实现修改名称的功能 413
20.11.2实现添加部门的功能 415
20.11.3实现删除现有部门的功能 416
20.12运行项目 417
20.13 开发常见问题与解决 418
20.14小结 419