第1篇 基础知识 2
第1章Oracle11g概述 2
1.1简述Oracle的发展史 3
1.2关系型数据库的基本理论 4
1.2.1关系型数据库与数据库管理系统 5
1.2.2关系型数据库的E-R模型 6
1.2.3关系型数据库的设计范式 7
1.3 Oracle 1 1g的新功能 10
1.4 Oracle 11g的安装与卸载 11
1.4.1 Oracle 1 1g的安装 11
1.4.2 Oracle 11g的卸载 18
1.5 Oracle 11g的管理工具 22
1.5.1 SQL*Plus工具 22
1.5.2 Oracle企业管理器 23
1.5.3数据库配置助手 24
1.6启动与关闭数据库实例 25
1.6.1启动数据库实例 25
1.6.2关闭数据库实例 27
1.7小结 29
1.8实践与练习 29
第2章Oracle11g体系结构 30
2.1 Oracle 11g体系结构概述 31
2.2逻辑存储结构 32
2.2.1数据块(Data Blocks) 32
2.2.2数据区(Extent) 33
2.2.3段(Segment) 34
2.2.4表空间(TableSpace) 34
2.3物理存储结构 36
2.3.1数据文件 36
2.3.2控制文件 38
2.3.3日志文件 39
2.3.4服务器参数文件 41
2.3.5密码文件、警告文件和跟踪文件 43
2.4 Oracle 11g服务器结构 45
2.4.1系统全局区(SGA) 45
2.4.2程序全局区(PGA) 48
2.4.3前台进程 49
2.4.4后台进程 49
2.5数据字典 53
2.5.1 Oracle数据字典简介 53
2.5.2 Oracle常用数据字典 54
2.6小结 55
2.7实践与练习 56
第3章SQL*Plus命令 57
3.1 SQL*Plus与数据库的交互 58
3.2设置SQL*Plus的运行环境 58
3.2.1简介SET命令 59
3.2.2使用SET命令设置运行环境 61
3.3常用SQL*Plus命令 66
3.3.1 HELP命令 66
3.3.2 DESCRIBE命令 67
3.3.3 SPOOL命令 68
3.3.4其他常用命令 69
3.4格式化查询结果 72
3.4.1 COLUMN命令 72
3.4.2 TTITLE和BTITLE命令 75
3.5小结 77
3.6实践与练习 77
第4章SQL语言基础 78
4.1 SQL语言简介 79
4.1.1 SQL语言的特点 79
4.1.2 SQL语言的分类 80
4.1.3 SQL语言的编写规则 81
4.2用户模式 82
4.2.1模式与模式对象 82
4.2.2示例模式SCOTT 83
4.3检索数据 84
4.3.1简单查询 85
4.3.2筛选查询 92
4.3.3分组查询 100
4.3.4排序查询 111
4.3.5多表关联查询 114
4.4 Oracle常用系统函数 122
4.4.1字符类函数 122
4.4.2数字类函数 125
4.4.3日期和时间类函数 127
4.4.4转换类函数 128
4.4.5聚合类函数 129
4.5子查询的用法 129
4.5.1什么是子查询 129
4.5.2单行子查询 131
4.5.3多行子查询 131
4.5.4关联子查询 132
4.6操作数据库 133
4.6.1插入数据(INSERT语句) 133
4.6.2更新数据(UPDATE语句) 138
4.6.3删除数据(DELETE语句和TRUNCATE语句) 140
4.7小结 142
4.8实践与练习 142
第5章PL/SQL编程 143
5.1 PL/SQL简介 144
5.1.1 PL/SQL块结构 144
5.1.2代码注释和标示符 145
5.1.3文本 148
5.2数据类型、变量和常量 149
5.2.1基本数据类型 149
5.2.2特殊数据类型 151
5.2.3定义变量和常量 154
5.2.4 PL/SQL表达式 155
5.3流程控制语句 156
5.3.1选择语句 157
5.3.2循环语句 162
5.4 PL/SQL游标 166
5.4.1基本原理 166
5.4.2显式游标 166
5.4.3隐式游标 170
5.4.4游标的属性 171
5.4.5游标变量 174
5.4.6通过for语句循环游标 176
5.5 PL/SQL异常处理 178
5.5.1异常处理方法 178
5.5.2异常处理语法 179
5.5.3预定义异常 180
5.5.4自定义异常 182
5.6小结 185
5.7实践与练习 185
第6章 过程、函数、触发器和包 186
6.1存储过程 187
6.1.1创建存储过程 187
6.1.2存储过程的参数 189
6.1.3 IN参数的默认值 195
6.1.4删除存储过程 197
6.2函数 197
6.2.1创建函数 197
6.2.2调用函数 198
6.2.3删除函数 199
6.3触发器 199
6.3.1触发器简介 200
6.3.2语句级触发器 201
6.3.3行级别触发器 203
6.3.4替换触发器 206
6.3.5用户事件触发器 208
6.3.6删除触发器 210
6.4程序包 211
6.4.1程序包的规范 211
6.4.2程序包的主体 212
6.4.3删除包 215
6.5小结 215
6.6实践与练习 215
第2篇 核心技术 218
第7章 管理控制文件和日志文件 218
7.1管理控制文件 219
7.1.1控制文件简介 219
7.1.2控制文件的多路复用 220
7.1.3创建控制文件 222
7.1.4备份和恢复控制文件 225
7.1.5删除控制文件 228
7.1.6查询控制文件的信息 228
7.2管理重做日志文件 229
7.2.1重做日志文件概述 229
7.2.2增加日志组及其成员 231
7.2.3删除重做日志文件 232
7.2.4更改重做日志文件的位置或名称 234
7.2.5查看重做日志信息 235
7.3管理归档日志文件 236
7.3.1日志模式分类 236
7.3.2管理归档操作 237
7.3.3设置归档文件位置 239
7.3.4查看归档日志信息 241
7.4小结 242
7.5实践与练习 243
第8章 管理表空间和数据文件 244
8.1表空间与数据文件的关系 245
8.2 Oracle 11g的默认表空间 246
8.2.1 SYSTEM表空间 247
8.2.2 SYSAUX表空间 247
8.3创建表空间 248
8.3.1创建表空间的语法 248
8.3.2通过本地化管理方式创建表空间 249
8.3.3通过段空间管理方式创建表空间 250
8.3.4创建非标准块表空间 251
8.3.5建立大文件表空间 252
8.4维护表空间与数据文件 253
8.4.1设置默认表空间 254
8.4.2更改表空间的状态 254
8.4.3重命名表空间 255
8.4.4删除表空间 255
8.4.5维护表空间中的数据文件 256
8.5管理撤销表空间 258
8.5.1撤销表空间的作用 258
8.5.2撤销表空间的初始化参数 259
8.5.3撤销表空间的基本操作 259
8.6管理临时表空间 263
8.6.1临时表空间简介 263
8.6.2创建临时表空间 264
8.6.3查询临时表空间的信息 264
8.6.4关于临时表空间组 265
8.7小结 267
8.8实践与练习 267
第9章 数据表对象 268
9.1数据表概述 269
9.2创建数据表 269
9.2.1数据表的逻辑结构 269
9.2.2创建一个数据表 271
9.2.3数据表的特性 272
9.3维护数据表 277
9.3.1增加和删除字段 278
9.3.2修改字段 279
9.3.3重命名表 280
9.3.4改变表空间和存储参数 281
9.3.5删除表 282
9.3.6修改表的状态 283
9.4数据完整性和约束性 284
9.4.1非空约束 285
9.4.2主键约束 286
9.4.3唯一性约束 288
9.4.4外键约束 290
9.4.5禁用和激活约束 293
9.4.6删除约束 295
9.5小结 295
9.6实践与练习 296
第10章 其他数据对象 297
10.1索引对象 298
10.1.1索引概述 298
10.1.2创建索引 299
10.1.3修改索引 303
10.1.4删除索引 305
10.1.5显示索引信息 305
10.2视图对象 308
10.2.1创建视图 308
10.2.2管理视图 312
10.3同义词对象 313
10.4序列对象 315
10.4.1创建序列 315
10.4.2管理序列 317
10.5小结 318
10.6实践与练习 318
第11章 表分区与索引分区 319
11.1分区技术简介 320
11.2创建表分区 320
11.2.1范围分区 320
11.2.2散列分区 322
11.2.3列表分区 324
11.2.4组合分区 325
11.2.5 Interval分区 326
11.3表分区策略 327
11.4管理表分区 327
11.4.1添加表分区 328
11.4.2合并分区 328
11.4.3删除分区 329
11.4.4并入分区 331
11.5创建索引分区 332
11.5.1索引分区概述 332
11.5.2本地索引分区 332
11.5.3全局索引分区 334
11.6管理索引分区 335
11.6.1索引分区管理的操作列表 335
11.6.2索引分区管理的实际操作 335
11.7小结 336
11.8实践与练习 337
第12章 用户管理与权限分配 338
12.1用户与模式的关系 339
12.2创建与管理用户 340
12.2.1身份验证 340
12.2.2创建用户 340
12.2.3修改用户 342
12.2.4删除用户 343
12.3用户权限管理 344
12.3.1权限简介 344
12.3.2授权操作 344
12.3.3回收系统权限 346
12.3.4对象授权 347
12.3.5回收对象权限 347
12.3.6查询用户与权限 348
12.4角色管理 348
12.4.1角色简介 348
12.4.2预定义角色 349
12.4.3创建角色与授权 351
12.4.4管理角色 352
12.4.5角色与权限的查询 353
12.5资源配置PROFILE 354
12.5.1 PROFILE简介 354
12.5.2使用PROFILE管理密码 355
12.5.3使用PROFILE管理资源 357
12.5.4维护PROFILE文件 358
12.5.5显示PROFILE信息 359
12.6小结 360
12.7实践与练习 361
第3篇 高级应用 364
第13章 数据库控制 364
13.1用事务控制操作 365
13.1.1事务的概述 365
13.1.2操作事务 366
13.2用锁控制并发存取 373
13.2.1并发控制 374
13.2.2为何加锁 375
13.2.3加锁的方法 378
13.3死锁 380
13.3.1死锁的产生 380
13.3.2死锁的预防 382
13.4小结 382
13.5实践与练习 382
第14章Oracle系统调优 383
14.1调整初始化参数 384
14.1.1 Oracle初始化参数分类 384
14.1.2主要系统调优参数介绍 384
14.2系统全局区(SGA)优化 386
14.2.1理解内存分配 386
14.2.2调整日志缓冲区 386
14.2.3调整共享池 388
14.2.4调整数据库缓冲区 391
14.2.5 SGA调优建议 391
14.3排序区优化 391
14.3.1排序区与其他内存区的关系 392
14.3.2理解排序活动 392
14.3.3专用模式下排序区的调整 393
14.3.4共享模式下排序区的调整 395
14.4小结 396
14.5实践与练习 396
第15章 优化SQL语句 397
15.1常规SQL语句优化 398
15.1.1建议不用“*”来代替所有列名 398
15.1.2用TRUNCATE代替DELETE 398
15.1.3在确保完整性的情况下多用COMMIT语句 399
15.1.4尽量减少表的查询次数 399
15.1.5用[NOT] EXISTS代替[NOT]IN 399
15.2表连接优化 400
15.2.1驱动表的选择 400
15.2.2 WHERE子句的连接顺序 401
15.3合理使用索引 401
15.3.1何时使用索引 401
15.3.2索引列和表达式的选择 401
15.3.3选择复合索引主列 402
15.3.4避免全表扫描大表 402
15.3.5监视索引是否被使用 403
15.4优化器的使用 403
15.4.1优化器的概念 404
15.4.2运行EXPLAIN PLAN 404
15.4.3 Oracle 11g中SQL执行计划的管理 405
15.5数据库和SQL重演 405
15.5.1数据库重演 405
15.5.2 SQL重演 406
15.6 Oracle的性能顾问 406
15.6.1 SQL调优顾问 406
15.6.2 SQL访问顾问 407
15.7小结 407
15.8实践与练习 407
第16章Oracle数据备份与恢复 408
16.1备份与恢复概述 409
16.2 RMAN工具简介 410
16.2.1 RMAN的优点 410
16.2.2 RMAN组件 411
16.2.3 RMAN通道 414
16.2.4 RMAN命令 416
16.3使用RMAN工具备份 418
16.3.1 RMAN备份策略 419
16.3.2使用RMAN备份数据库文件和归档日志 419
16.3.3增量备份 422
16.4使用RMAN工具完全恢复 423
16.4.1恢复处于NOARCHIVELOG模式的数据库 423
16.4.2恢复处于ARCHIVELOG模式的数据库 425
16.5使用RMAN工具部分恢复 426
16.5.1基于时间的不完全恢复 426
16.5.2基于更改的不完全恢复 428
16.6小结 429
16.7实践与练习 429
第17章 数据导出和导入 430
17.1 EXPDP和IMPDP概述 431
17.2 EXPDP导出数据 431
17.2.1执行EXPDP命令 431
17.2.2 EXPDP命令参数 434
17.3 IMPDP导入数据 436
17.3.1执行IMPDP命令 437
17.3.2 IMPDP命令参数 438
17.4 SQL* Loader工具 439
17.4.1 SQL* Loader概述 439
17.4.2加载数据 440
17.5小结 443
17.6实践与练习 443
第18章Oracle 11 g的闪回技术 444
18.1闪回技术简介 445
18.2闪回数据库 445
18.2.1闪回恢复区 446
18.2.2闪回数据库配置 450
18.2.3闪回数据库技术应用 451
18.3闪回表 453
18.3.1闪回表命令的语法 453
18.3.2闪回表的应用 454
18.4闪回丢弃 455
18.4.1回收站简介 455
18.4.2回收站的应用 456
18.5其他闪回技术 457
18.5.1闪回版本查询 457
18.5.2闪回事务查询 457
18.5.3闪回数据归档 458
18.6小结 458
18.7实践与练习 459
第4篇 项目实战 462
第19章 企业人事管理系统 462
19.1开发背景 463
19.2系统分析 463
19.3系统设计 463
19.3.1系统目标 463
19.3.2系统功能结构 464
19.3.3系统预览 465
19.3.4业务流程图 468
19.3.5文件夹结构设计 468
19.4数据库设计 469
19.4.1数据库分析 469
19.4.2数据库概念设计 469
19.4.3数据库逻辑结构设计 470
19.5主窗体设计 472
19.5.1导航栏的设计 472
19.5.2工具栏的设计 474
19.6公共模块设计 476
19.6.1编写Hibemate配置文件 476
19.6.2编写Hibemate持久化类和映射文件 477
19.6.3编写通过Hibernate操作持久化对象的常用方法 478
19.6.4创建用于特殊效果的部门树对话框 479
19.6.5创建通过部门树选取员工的面板和对话框 480
19.7人事管理模块设计 482
19.7.1人事管理模块功能概述 482
19.7.2人事管理模块技术分析 483
19.7.3人事管理模块实现过程 484
19.8待遇管理模块设计 488
19.8.1待遇管理模块功能概述 489
19.8.2待遇管理模块技术分析 490
19.8.3待遇管理模块实现过程 490
19.9系统维护模块设计 494
19.9.1系统维护模块功能概述 494
19.9.2系统维护模块技术分析 496
19.9.3系统维护模块实现过程 496
19.10 Hibernate关联关系的建立方法 500
19.10.1建立一对一关联 500
19.10.2建立一对多关联 501
19.11小结 503