第1章 Oracle 11g关系数据库 1
1.1 关系数据模型 1
1.1.1 数据结构 1
1.1.2 关系的完整性约束 3
1.1.3 关系数据模型的特点 4
1.2 关系数据库的范式理论 5
1.2.1 第一范式 5
1.2.2 第二范式 6
1.2.3 第三范式 6
1.3 实体-关系模型 7
1.3.1 E-R模型的概念 7
1.3.2 E-R图的绘制 8
1.3.3 将E-R模型转化为关系模型 9
1.4 Oracle 11g的下载和安装 11
1.4.1 下载和安装Oracle 11g 11
1.4.2 Oracle服务管理 13
1.5 创建数据库 14
1.6 Oracle默认用户 18
1.7 使用OEM 19
1.8 扩展练习 21
第2章 Oracle数据库的体系结构 22
2.1 物理存储结构 22
2.1.1 数据文件 22
2.1.2 控制文件 24
2.1.3 重做日志文件 25
2.1.4 其他文件 25
2.2 逻辑存储结构 26
2.2.1 表空间 27
2.2.2 段 27
2.2.3 区 29
2.2.4 块 29
2.3 Oracle数据库的实例结构 31
2.3.1 Oracle进程结构 31
2.3.2 Oracle内存结构 36
2.4 数据字典 40
2.4.1 Oracle数据字典介绍 40
2.4.2 常用数据字典 41
2.5 扩展练习 44
第3章 使用SQL*Plus工具 46
3.1 SQL*Plus概述 46
3.1.1 SQL*Plus的主要功能 46
3.1.2 SQL*Plus连接与断开数据库 47
3.2 使用SQL*Plus命令 49
3.2.1 使用DESCRIBE命令查看表结构 49
3.2.2 执行SQL脚本 50
3.2.3 使用SAVE命令保存缓冲区内容到文件 51
3.2.4 使用GET命令读取脚本文件到缓冲区 52
3.2.5 使用EDIT命令编辑缓冲区内容或文件 52
3.2.6 使用SPOOL命令复制输出结果到文件 53
3.3 变量 54
3.3.1 临时变量 54
3.3.2 定义变量 55
3.4 练习3-1:使用多个变量动态获取部门信息 57
3.5 格式化查询结果 58
3.5.1 格式化列 58
3.5.2 设置每页显示的数据行 59
3.5.3 设置每行显示的字符数 60
3.6 创建简单报表 61
3.6.1 报表的标题设计 61
3.6.2 统计数据 63
3.7 练习3-2:使用报表统计各部门的最高工资 64
3.8 扩展练习 65
第4章 管理表空间 66
4.1 基本表空间 66
4.1.1 创建Oracle基本表空间 66
4.1.2 使用表空间 69
4.1.3 管理表空间 70
4.2 练习4-1:创建并修改表空间tablespace 76
4.3 临时表空间 77
4.3.1 创建临时表空间 77
4.3.2 修改临时表空间 78
4.3.3 临时表空间组 79
4.4 大文件表空间 81
4.5 非标准数据块表空间 82
4.6 撤销表空间 83
4.6.1 管理撤销表空间的方式 84
4.6.2 创建与管理撤销表空间 85
4.7 练习4-2:管理撤销表空间 89
4.8 扩展练习 90
第5章 表 91
5.1 创建表 91
5.1.1 数据类型 91
5.1.2 创建Oracle数据表 93
5.1.3 指定表空间 94
5.1.4 指定存储参数 95
5.2.1 指定重做日志 96
5.2 练习5-1:创建图书信息表 97
5.3 修改数据表 97
5.3.1 增加和删除列 98
5.3.2 更新列 99
5.3.3 重命名表 100
5.3.4 改变表的存储表空间和存储参数 101
5.3.5 删除表定义 102
5.4 练习5-2:修改会员信息表 102
5.5 表的完整性约束 103
5.5.1 约束的分类和定义 103
5.5.2 NOTNULL约束 104
5.5.3 PRIMARYKEY约束 106
5.5.4 UNIQUE约束 107
5.5.5 CHECK约束 109
5.5.6 FOREIGN KEY约束 110
5.5.7 DISABLE和ENABLE约束 113
5.6 练习5-3:创建学生信息表和班级表 114
5.7 扩展练习 115
第6章 控制文件与日志文件的管理 116
6.1 管理控制文件 116
6.1.1 控制文件概述 116
6.1.2 创建控制文件 117
6.1.3 备份控制文件 121
6.1.4 恢复控制文件 122
6.1.5 控制文件的移动与删除 123
6.1.6 查看控制文件信息 125
6.2 管理重做日志文件 126
6.2.1 日志文件概述 126
6.2.2 创建日志文件组及其成员 127
6.2.3 重新定义日志文件成员 129
6.2.4 删除日志文件组及其成员 131
6.2.5 切换日志文件组 132
6.2.6 清空日志文件组 132
6.2.7 查看日志文件信息 134
6.3 管理归档日志 135
6.3.1 日志操作模式 135
6.3.2 归档日志概述 136
6.3.3 设置数据库模式 137
6.3.4 设置归档目标 139
6.3.5 归档文件格式 140
6.3.6 设置归档进程的跟踪级别 142
6.3.7 查看归档日志信息 143
6.4 练习6-1:恢复非归档模式下的控制文件和日志文件 145
6.5 练习6-2:恢复单个控制文件 147
6.6 扩展练习 147
第7章 SQL基础 149
7.1 基本查询 149
7.1.1 查询语句——SELECT 149
7.1.2 指定过滤条件——WHERE子句 151
7.1.3 获取唯一记录——DISTINCT 154
7.1.4 分组——GROUP BY子句 154
7.1.5 过滤分组——HAVING子句 156
7.1.6 排序——ORDER BY子句 156
7.2 其他DML语句 158
7.2.1 插入数据——INSERT操作 158
7.2.2 更新数据——UPDATE操作 160
7.2.3 删除数据——DELETE操作 161
7.2.4 合并数据——MERGE操作 161
7.3 基本函数 163
7.3.1 字符串函数 163
7.3.2 数值函数 167
7.3.3 日期函数 170
7.3.4 聚合函数 172
7.4 数据一致性与事务管理 174
7.4.1 Oracle中的数据一致性与事务 174
7.4.2 Oracle中的事务处理 174
7.4.3 事务处理原则 176
7.5 练习7-1:学生信息表的合并 178
7.6 练习7-2:统计各个部门最近一个月的入职人数 179
7.7 练习7-3:打印各个部门的员工工资详情 179
7.8 练习7-4:统计各个部门员工的最高工资 180
7.9 扩展练习 180
第8章 子查询与高级查询 182
8.1 子查询 182
8.1.1 子查询类型 182
8.1.2 实现单行子查询 183
8.1.3 实现多列子查询 185
8.1.4 实现多行子查询 187
8.1.5 实现关联子查询 189
8.1.6 实现嵌套子查询 191
8.2 连接查询 192
8.2.1 使用等号(=)实现多个表的简单连接查询 193
8.2.2 使用INNER JOIN实现多个表的内连接 193
8.2.3 使用OUTER JOIN实现多个表的外连接 194
8.3 使用集合操作符 196
8.3.1 求并集(记录唯一)——UNION运算 197
8.3.2 求并集——UNION ALL运算 198
8.3.3 求交集——INTERSECT运算 198
8.3.4 求差集——MINUS运算 199
8.4 练习8-1:统计工资最高的第6到第10位之间的员工 199
8.5 练习8-2:统计不同工资范围内的员工人数 201
8.6 练习8-3:获取平均工资最高的部门信息 201
8.7 练习8-4:获取部门编号为100的所有员工信息 202
8.8 扩展练习 202
第9章 PL/SQL基础 204
9.1 PL/SQL概述 204
9.1.1 PL/SQL语言特点 204
9.1.2 PL/SQL代码编写规则 205
9.2 PL/SQL编程结构 206
9.2.1 PL/SQL程序块的基本结构 206
9.2.2 PL/SQL数据类型 207
9.2.3 变量和常量 208
9.2.4 复合数据类型 209
9.2.5 运算符与表达式 211
9.2.6 PL/SQL注释 212
9.3 条件选择语句 213
9.3.1 IF条件选择语句 213
9.3.2 CASE表达式 215
9.4 循环语句 219
9.4.1 LOOP循环语句 219
9.4.2 WHILE循环语句 221
9.4.3 FOR循环语句 222
9.5 练习9-1:打印九九乘法口诀表 223
9.6 游标 224
9.6.1 声明游标 224
9.6.2 打开游标 225
9.6.3 检索游标 226
9.6.4 关闭游标 226
9.6.5 游标属性 226
9.6.6 简单游标循环 228
9.6.7 游标FOR循环 228
9.6.8 使用游标更新或删除数据 229
9.7 异常 231
9.7.1 异常处理 231
9.7.2 预定义异常 231
9.7.3 非预定义异常 232
9.7.4 自定义异常 234
9.8 练习9-2:更新员工工资 235
9.9 练习9-3:获取指定部门下的所有员工信息 236
9.10 扩展练习 237
第10章 PL/SQL高级应用 239
10.1 存储过程 239
10.1.1 创建与调用存储过程 239
10.1.2 存储过程的参数 241
10.1.3 修改与删除存储过程 244
10.1.4 查看存储过程的定义信息 245
10.2 练习10-1:添加学生 245
10.3 函数 246
10.3.1 函数的基本操作 246
10.3.2 函数的参数 248
10.4 练习10-2:计算指定部门编号的员工平均工资 250
10.5 触发器 252
10.5.1 触发器的类型 252
10.5.2 创建触发器 252
10.5.3 DML触发器 253
10.5.4 INSTEAD OF触发器 257
10.5.5 数据库事件触发器 259
10.5.6 DDL触发器 262
10.5.7 触发器的基本操作 263
10.6 练习10-3:使用触发器自动为主键列赋值 264
10.7 程序包 265
10.7.1 程序包的优点 266
10.7.2 程序包的定义 267
10.7.3 调用程序包中的元素 268
10.7.4 删除程序包 269
10.8 练习10-4:管理员工工资 269
10.9 扩展练习 271
第11章 其他模式对象 272
11.1 索引 272
11.1.1 索引的类型 272
11.1.2 指定索引选项 275
11.1.3 创建B树索引 276
11.1.4 创建位图索引 277
11.1.5 创建反向键索引 278
11.1.6 创建基于函数的索引 278
11.1.7 管理索引 279
11.2 练习11-1:为产品表创建索引并管理 281
11.3 临时表 282
11.3.1 临时表的特点 282
11.3.2 创建与使用临时表 283
11.4 视图 285
11.4.1 创建视图 285
11.4.2 可更新的视图 286
11.4.3 删除视图 287
11.5 练习11-2:为customer表创建视图并修改 288
11.6 序列 289
11.6.1 创建序列 289
11.6.2 修改序列 290
11.6.3 删除序列 291
11.7 练习11-3:为用户注册表创建序列 291
11.8 同义词 292
11.9 扩展练习 293
第12章 用户角色、权限与安全 295
12.1 用户和模式 295
12.1.1 用户 295
12.1.2 模式 296
12.2 管理用户 298
12.2.1 创建用户 298
12.2.2 修改用户 300
12.2.3 删除用户 301
12.2.4 管理用户会话 302
12.3 用户配置文件 303
12.3.1 创建用户配置文件 303
12.3.2 使用配置文件 305
12.3.3 查看配置文件信息 306
12.3.4 修改与删除配置文件 306
12.4 权限 307
12.4.1 系统权限 307
12.4.2 对象权限 311
12.5 角色 315
12.5.1 角色概述 315
12.5.2 系统预定义角色 316
12.5.3 创建角色 318
12.5.4 为角色授予权限 319
12.5.5 修改用户的默认角色 319
12.5.6 管理角色 320
12.5.7 查看角色信息 322
12.6 练习12-1:创建用户并修改密码 324
12.7 练习12-2:为新用户newuser创建配置文件 324
12.8 练习12-3:为新用户newuser创建对象权限 324
12.9 扩展练习 325
第13章 SQL语句优化 326
13.1 一般的SQL语句优化技巧 326
13.1.1 SELECT语句中避免使用“*” 326
13.1.2 WHERE条件的合理使用 327
13.1.3 使用TRUNCATE替代DELETE 329
13.1.4 在确保完整性的情况下多用COMMIT语句 330
13.1.5 尽量减少表的查询次数 330
13.1.6 使用EXISTS替代IN 331
13.1.7 使用EXISTS替代DISTINCT 332
13.1.8 使用“<=”替代“<” 334
13.1.9 使用完全限定的列引用 334
13.2 合理连接表 335
13.2.1 选择最有效率的表名顺序 336
13.2.2 WHERE子句的条件顺序 337
13.3 有效使用索引 338
13.3.1 使用索引来提高效率 338
13.3.2 使用索引的基本原则 339
13.3.3 避免对索引列使用NOT关键字 339
13.3.4 避免对唯一索引列使用ISNULL或ISNOTN几L 340
13.3.5 选择复合索引主列 342
13.3.6 监视索引是否被使用 343
13.4 扩展练习 343
第14章 数据加载与传输 345
14.1 Data Pump工具 345
14.1.1 Data Pump工具概述 345
14.1.2 与数据泵相关的数据字典视图 346
14.1.3 使用Data Pump工具前的准备 346
14.2 Data Pump Export工具 347
14.2.1 Data Pump Export选项 348
14.2.2 使用Data Pump Export 351
14.3 练习14-1:导出产品价格表 356
14.4 Data Pump Import工具 357
14.4.1 Data Pump Import选项 357
14.4.2 使用DataPump Import 360
14.5 SQL*Loader 363
14.5.1 SQL*Loader概述 363
14.5.2 数据加载示例 365
14.6 练习14-2:导入用户信息到user表中 368
14.7 扩展练习 369
第15章 使用RMAN工具备份与恢复 370
15.1 RMAN简介 370
15.1.1 RMAN的特点 370
15.1.2 RMAN组件 371
15.1.3 保存RMAN资料档案库 374
15.1.4 配置RMAN 376
15.2 RMAN的基本操作 380
15.2.1 RMAN命令 380
15.2.2 连接到目标数据库 381
15.2.3 取消注册数据库 383
15.3 使用RMAN备份数据库 384
15.3.1 RMAN备份类型 384
15.3.2 BACKUP命令 387
15.3.3 备份数据库 388
15.3.4 多重备份 393
15.3.5 镜像复制 393
15.4 练习15-1:备份整个数据库 394
15.5 RMAN恢复 395
15.5.1 RMAN恢复机制 395
15.5.2 数据库非归档恢复 397
15.5.3 数据库归档恢复 399
15.5.4 移动数据文件到新的位置 401
15.6 练习15-2:备份和恢复userinfo表空间 402
15.7 扩展练习 403
第16章 ATM自动取款机系统数据库设计 404
16.1 系统分析 404
16.2 数据库设计 405
16.3 创建系统数据表 407
16.3.1 创建表空间和用户 407
16.3.2 创建用户信息表 408
16.3.3 创建银行卡信息表 409
16.3.4 创建交易信息表 411
16.4 模拟常规业务操作和创建视图 412
16.4.1 模拟常规业务操作 412
16.4.2 创建视图 415
16.5 业务办理 419
16.5.1 更新账号 419
16.5.2 实现简单的交易操作 420
16.5.3 用户开户 422
16.5.4 修改密码 424
16.5.5 账号挂失 425
16.5.6 办理存取款业务 426
16.5.7 余额查询 428
16.5.8 办理转账业务 429
16.5.9 统计银行的资金流通余额和盈利结算 431
16.5.10 撤户 431