第1章 Oracle 11g的安装 1
1.1 安装要求 2
1.2 下载Oracle数据库 2
1.3 安装Oracle数据库 3
1.4 Oracle的启动和关闭 7
1.5 下载Oracle帮助文档 8
本章小结 8
第2章 SQL基础 9
2.1 数据库管理系统(DBMS)概述 10
2.1.1 数据库的产生 10
2.1.2 关系型数据库 10
2.1.3 常见的关系型数据库 12
2.2 SQL概述 13
2.2.1 SQL语言的定义 13
2.2.2 SQL语言的特点 14
2.2.3 SQL语言的分类 14
2.2.4 SQL语言的编写规范 15
2.3 Oracle数据库概述 16
2.3.1 Oracle数据库的发展史 16
2.3.2 Oracle数据库对象 17
2.3.3 Oracle数据库中的用户 18
2.3.4 Oracle数据库中样例表 19
2.4 Oracle的主要开发工具SQL*Plus 21
2.4.1 SQL*Plus简介 21
2.4.2 SQL*Plus的启动和退出 21
2.4.3 SQL*Plus编辑命令 24
2.4.4 SQL*Plus文件命令 27
2.4.5 SQL*Plus格式化输出结果命令 29
2.4.6 SQL*Plus环境设置和显示命令 33
2.4.7 SQL*Plus中的交互命令 36
2.4.8 定制SQL*Plus环境参数 40
2.5 Oracle其他开发工具介绍 41
2.5.1 Oracle SQL Developer 41
2.5.2 TOAD for Oracle Application Developers 45
2.5.3 PL/SQL Developer 45
2.5.4 几种开发工具的对比 46
本章小节 47
练习题 47
第3章 SQL查询 51
3.1 基本查询 50
3.1.1 简单查询语句 50
3.1.2 查询所有的列 50
3.1.3 查询指定列 50
3.1.4 去掉重复值 51
3.1.5 查询语句中使用算术表达式 53
3.1.6 查询语句中使用列的别名 53
3.1.7 查询语句中使用连接表达式 54
3.1.8 处理空值(NULL) 54
3.1.9 查询日期列 56
3.2 限制查询结果 58
3.2.1 在WEHER子句中使用简单比较操作符 58
3.2.2 在WHERE子句中使用BETWEEN...AND 60
3.2.3 在WHERE子句中使用IN(list) 60
3.2.4 在WHERE子句中使用LIKE 61
3.2.5 在WHERE子句中使用IS NULL 62
3.2.6 在WHERE子句中使用AND 62
3.2.7 在WHERE子句中使用OR 63
3.2.8 在WHERE子句中使用NOT 63
3.2.9 运算符的优先级规则 64
3.3 查询结果排序 64
3.3.1 升序排序 64
3.3.2 降序排序 65
3.3.3 使用非选择列表排序 66
3.3.4 使用表达式排序 67
3.3.5 使用列别名排序 67
3.3.6 使用列位置排序 68
3.3.7 使用多列排序 69
3.4 分组查询 69
3.4.1 分组函数的使用 70
3.4.2 GROUP BY短语及其子句 71
3.5 连接查询 77
3.5.1 等值连接 78
3.5.2 非等值连接 80
3.5.3 自连接 80
3.5.4 内连接和外连接 81
3.6 子查询 85
3.6.1 单行子查询 86
3.6.2 多行子查询 87
3.6.3 多列子查询 88
3.6.4 其他子查询 89
3.6.5 使用子查询需要注意的问题 90
3.7 集合操作 90
本章小结 92
练习题 93
第4章 SQL单行函数 97
4.1 单行函数的定义 98
4.2 字符函数 98
4.2.1 大小写转换函数UPPER、LOWER、INITCAP 98
4.2.2 字符串连接函数CONCAT 100
4.2.3 获取子串函数SUBSTR 100
4.2.4 获取字符串长度函数LENGTH 101
4.2.5 获取子串在字符串中的位置函数INSTR 102
4.2.6 补位函数LPAD、RPAD 102
4.2.7 截去子串函数TRIM、LTRIM、RTRIM 103
4.2.8 替换函数REPLACE 104
4.2.9 ASCII码和字符的对应函数ASCII、CHR 104
4.3 数字函数 105
4.3.1 ROUND、TRUNC 105
4.3.2 CEIL、FLOOR 106
4.3.3 ABS、MOD、SIGN、POWER、SQRT 106
4.4 日期函数 107
4.4.1 SYSDATE 107
4.4.2 ADD_MONTHS 108
4.4.3 NEXT_DAY 108
4.4.4 LAST_DAY 109
4.4.5 MONTH_BETWEEN 110
4.4.6 ROUND,TRUNC 110
4.4.7 SESSIONTIMEZONE 111
4.4.8 EXTRACT 112
4.5 转换函数 112
4.5.1 日期到字符转换函数TO_CHAR 112
4.5.2 字符到日期转换函数TO_DATE 113
4.5.3 数字到字符转换函数TO_CHAR 114
4.5.4 字符到数字转换函数TO_NUMBER 115
4.6 NULL函数 116
4.6.1 COALESCE 116
4.6.2 NVL,NVL2 116
4.6.3 NULLIF 117
4.6.4 LNNVL 118
4.7 比较函数 119
4.8 环境和标识函数 120
4.8.1 SYSCONTEXT 120
4.8.2 USER 121
4.9 其他函数 122
4.9.1 DECODE 122
4.9.2 VSIZE 123
4.9.3 DUMP 124
本章小结 124
练习题 125
第5章 数据操纵与事务控制 129
5.1 数据操纵简介 130
5.2 插入数据 130
5.2.1 用于插入数据的INSERT语句 130
5.2.2 使用VALUES子句插入单行数据 130
5.2.3 通过子查询插入多条数据 132
5.2.4 多表INSERT语句 133
5.3 更新数据 134
5.3.1 一般UPDATE语句 134
5.3.2 使用子查询更新数据 136
5.4 删除数据 136
5.4.1 一般DELETE语句 136
5.4.2 使用子查询删除数据 137
5.4.3 删除主表数据的问题 137
5.5 MERGE操作 137
5.5.1 使用MERGE语句修改表数据 137
5.5.2 省略INSERT或UPDATE子句 139
5.5.3 带条件的INSERT或UPDATE子句 141
5.5.4 无条件INSERT子句 141
5.5.5 DELETE子句 142
5.6 事务控制 142
5.6.1 事务概念 142
5.6.2 提交事务 144
5.6.3 回退事务和保存点 145
5.6.4 只读事务 147
5.6.5 顺序事务 147
本章小结 148
练习题 148
第6章 数据库对象的创建和管理 149
6.1 数据库的主要对象 150
6.1.1 数据库的主要对象 150
6.1.2 常用数据类型 150
6.1.3 数据定义语言(DDL)命名规则 151
6.1.4 数据字典 152
6.2 表 154
6.2.1 表的简介 154
6.2.2 创建表 154
6.2.3 修改表 156
6.2.4 截断表 158
6.2.5 删除表 159
6.2.6 给表增加注释 159
6.2.7 在数据字典中查看表信息 159
6.3 约束条件 161
6.3.1 约束条件简介 161
6.3.2 非空(Not Null) 163
6.3.3 唯一(Unique) 164
6.3.4 主键(Primary Key) 166
6.3.5 外键(Foreign Key) 168
6.3.6 检查(Check) 171
6.3.7 禁用和启用约束条件 172
6.3.8 修改约束条件名称 174
6.3.9 删除约束条件 174
6.4 视图 175
6.4.1 视图简介 175
6.4.2 创建视图 176
6.4.3 修改视图 178
6.4.4 删除视图 179
6.4.5 在数据字典中查看视图信息 179
6.5 索引 180
6.5.1 索引简介 180
6.5.2 创建索引 181
6.5.3 重建索引 182
6.5.4 删除索引 182
6.5.5 在数据字典中查看索引信息 182
6.6 序列 183
6.6.1 序列简介 183
6.6.2 创建序列 183
6.6.3 修改序列 184
6.6.4 删除序列 185
6.6.5 在数据字典中查看序列信息 185
6.7 同义词 186
6.7.1 同义词简介 186
6.7.2 创建同义词 186
6.7.3 删除同义词 187
6.7.4 在数据字典中查看同义词信息 188
本章小结 188
练习题 190
第7章 PL/SQL开发 193
7.1 了解PL/SQL 194
7.1.1 PL/SQL语言 194
7.1.2 PL/SQL程序块的基本结构 195
7.1.3 在开发工具中编写简单的PL/SQL程序 198
7.1.4 PL/SQL编码规范 199
7.1.5 PL/SQL中的注释 200
7.2 PL/SQL的变量 201
7.2.1 简单变量 201
7.2.2 复合变量 203
7.3 PL/SQL的基本语法 206
7.3.1 赋值语句 206
7.3.2 表达式 207
7.3.3 在PL/SQL中使用SQL语句 209
7.3.4 条件判断语句 214
7.3.5 循环语句 217
7.3.6 PL/SQL程序块的作用域 220
7.4 处理游标 221
7.4.1 游标变量 221
7.4.2 隐式游标 222
7.4.3 显式游标 222
7.4.4 参数游标 225
7.4.5 游标变量 227
7.4.6 游标的FOR循环 228
7.4.7 更新或删除游标行 229
7.5 异常处理 231
7.5.1 异常概述 231
7.5.2 基本语法 232
7.5.3 预定义异常 232
7.5.4 非预定义异常 234
7.5.5 用户自定义异常 235
7.5.6 SQLCODE和SQLERRM 236
7.6 PL/SQL程序单元 237
7.6.1 程序单元分类及基本规则 237
7.6.2 过程 238
7.6.3 函数 244
7.6.4 包 249
7.6.5 触发器 255
7.6.6 PL/SQL程序单元总结 268
本章小结 269
练习题 270
第8章 Oracle体系结构和管理基础 273
8.1 Oracle体系结构基本概念 274
8.2 Oracle内存结构 275
8.2.1 概述 275
8.2.2 共享池(Shared Pool) 276
8.2.3 数据高速缓存区(Data Buffer Area) 277
8.2.4 重做日志缓存区(Redo Log Buffer) 279
8.2.5 大缓存池(Large Pool) 280
8.2.6 Java池(Java Pool) 280
8.2.7 程序全局区(PGA) 280
8.3 Oracle后台进程 280
8.3.1 检查点(Checkpoint)和SCN(System Change Number) 281
8.3.2 DBWR 282
8.3.3 LGWR 282
8.3.4 CKPT 283
8.3.5 SMON 284
8.3.6 PMON 284
8.3.7 ARCH 284
8.4 Oracle存储结构 285
8.4.1 数据文件和表空间 285
8.4.2 重做日志文件 289
8.4.3 控制文件 290
8.4.4 其他文件 291
8.5 Oracle逻辑结构和物理结构的关系 293
8.6 数据字典 294
8.6.1 数据字典定义 294
8.6.2 数据字典命名规则 295
8.6.3 常用的数据字典 296
8.6.4 常用的动态性能视图 301
8.7 SQL语句执行过程 305
8.7.1 连接到数据库服务器 305
8.7.2 连接和会话 306
8.7.3 执行查询操作 307
8.7.4 执行DML操作 309
8.7.5 事务提交 310
8.7.6 事务撤销 310
8.8 Oracle初始化参数 311
8.8.1 初始化参数文件 311
8.8.2 显示参数 314
8.8.3 常用的初始化参数 315
8.8.4 修改初始化参数 317
8.9 数据库的启动和停止 317
8.9.1 启动数据库 318
8.9.2 将数据库启动到指定状态 320
8.9.3 停止数据库 321
8.9.4 使用诊断文件监视实例 322
本章小结 324
练习题 325
第9章 数据库用户及安全管理 329
9.1 数据库安全概述 330
9.2 用户管理 331
9.2.1 Oracle数据库的初始用户 331
9.2.2 方案(Schema) 331
9.2.3 和用户相关的属性 332
9.2.4 创建用户 333
9.2.5 修改用户 335
9.2.6 删除用户 336
9.2.7 获取和用户有关的信息 336
9.3 权限管理 336
9.3.1 权限概述 336
9.3.2 系统权限管理 337
9.3.3 对象权限管理 339
9.3.4 获取和权限有关的信息 341
9.4 角色管理 342
9.4.1 角色概述 342
9.4.2 系统预定义角色 343
9.4.3 创建自定义角色 344
9.4.4 角色授权 344
9.4.5 修改角色 348
9.4.6 删除角色 348
9.4.7 查询角色信息 349
9.5 资源配置 349
9.5.1 资源配置概述 349
9.5.2 创建资源配置 350
9.5.3 修改资源配置 351
9.5.4 删除资源配置 352
9.5.5 查询资源配置 352
本章小结 352
本章练习题 353
第10章 SQL语句优化 355
10.1 SQL优化原则 356
10.1.1 为什么要优化SQL语句 356
10.1.2 一般SQL优化原则 356
10.1.3 在表连接中的优化原则 360
10.1.4 合理使用索引 360
10.1.5 动态性能视图 362
10.2 Oracle优化器和执行计划 363
10.2.1 Oracle优化器 363
10.2.2 查看Oracle执行计划 364
10.2.3 执行计划释义 369
10.2.4 SQL执行计划管理 380
10.2.5 SQL计划基线 381
10.2.6 测试执行计划管理 383
10.3 Oracle性能顾问 385
10.3.1 ADDM 386
10.3.2 AWR 387
10.3.3 SQL调优顾问 388
10.3.4 SQL访问顾问 388
本章小结 389
练习题 390
第11章 简单备份与恢复 391
11.1 Oracle备份与恢复综述 392
11.1.1 为什么要备份和恢复 392
11.1.2 备份和恢复基础 392
11.1.3 备份与恢复的基本原则 394
11.1.4 备份与恢复涉及主要数据结构 394
11.2 备份基础 396
11.2.1 失败种类 396
11.2.2 需要备份的信息 404
11.2.3 备份的种类 405
11.3 恢复基础 406
11.3.1 恢复的工作原理 406
11.3.2 恢复的种类 407
11.4 备份和恢复 408
11.4.1 备份和恢复方法 408
11.4.2 制定恢复策略 411
11.4.3 制定备份策略 412
11.4.4 备份和恢复的配制 414
11.5 RMAN 426
11.5.1 RMAN功能组件 427
11.5.2 RMAN恢复目录 429
11.5.3 连接到RMAN环境 431
11.5.4 RMAN备份集 435
11.5.5 RMAN映像副本 442
11.5.6 RMAN备份 443
11.5.7 RMAN恢复 449
11.6 EXPDP和IMPDP 453
11.7 EXP和IMP 458
本章小结 461
练习题 462