第1篇 Oracle基础篇 1
第1章 Oracle的安装 1
1.1 Oracle数据库简介 1
1.1.1 数据库术语 1
1.1.2 主流数据库简介 2
1.1.3 Oracle数据库的特点 2
1.2 安装Oracle数据库 3
1.2.1 Oracle数据库的版本变迁及安装环境 3
1.2.2 下载Oracle安装文件 4
1.2.3 安装过程 6
1.2.4 安装中需要注意的问题 11
1.3 小结 11
第2章 Oracle常用工具 12
2.1 Oracle企业管理器 12
2.1.1 Oracle企业管理器概述 12
2.1.2 使用Oracle企业管理器 13
2.2 网络配置助手(Net Configuration Assistant) 14
2.2.1 Net Configuration Assistant概述 14
2.2.2 配置监听程序 14
2.2.3 配置本地网络服务器名 16
2.3 网络管理器(Oracle NetManager) 19
2.3.1 Oracle Net Manager概述 19
2.3.2 监听器配置(LISTENER) 20
2.3.3 本地服务名配置 21
2.4 小结 23
第3章 SQL Plus和SQL Developer 24
3.1 使用SQL Plus 24
3.1.1 登录SQL Plus 24
3.1.2 利用SQL Plus执行数据库操作 25
3.1.3 利用SQL Plus解决数据库管理员密码丢失问题 25
3.2 使用SQL Developer 26
3.2.1 登录SQL Developer 26
3.2.2 SQL Developer操作简介 27
3.3 小结 27
第4章 Oracle数据库 28
4.1 创建Oracle数据库 28
4.2 删除Oracle数据库 34
4.2.1 删除数据库 34
4.2.2 修改注册表 36
4.3 安装示例数据库 37
4.4 小结 40
第5章 Oracle数据类型与表的管理 41
5.1 Oracle常用的数据类型 41
5.2 创建Oracle数据表 42
5.2.1 设计数据表 42
5.2.2 利用OEM创建数据表 43
5.2.3 利用工具创建数据表 48
5.2.4 利用命令创建数据表 49
5.3 修改数据表结构 50
5.3.1 利用OEM修改数据表结构 51
5.3.2 利用工具修改数据表结构 53
5.3.3 利用命令查看、修改数据表结构 53
5.4 删除数据表 55
5.4.1 利用OEM删除数据表 55
5.4.2 利用工具删除数据表 56
5.4.3 利用drop命令删除数据表 56
5.5 对数据表中数据的操作 57
5.5.1 添加数据 57
5.5.2 查看数据 58
5.5.3 修改数据 60
5.5.4 删除数据 61
5.6 特殊的数据表dual 61
5.7 小结 62
第6章 表的约束 63
6.1 约束简介 63
6.2 主键约束 63
6.2.1 主键简介 64
6.2.2 利用命令添加主键约束 64
6.2.3 主键使用场景 66
6.2.4 修改主键约束 67
6.2.5 删除主键约束 70
6.2.6 主键与索引 71
6.3 外键约束 73
6.3.1 外键简介 73
6.3.2 添加外键约束 74
6.3.3 验证外键约束 76
6.3.4 修改外键约束 78
6.3.5 使用SQL Developer添加、删除外键约束 80
6.3.6 外键使用场景 80
6.4 唯一性约束 81
6.4.1 唯一性约束简介 81
6.4.2 添加唯一性约束 82
6.4.3 验证唯一性约束 83
6.4.4 修改唯一性约束 83
6.4.5 使用SQL Developer添加、删除唯一性约束 85
6.4.6 唯一性约束使用场景 86
6.5 检查约束 86
6.5.1 检查约束简介 86
6.5.2 添加检查约束 87
6.5.3 验证检查约束 88
6.5.4 修改检查约束 89
6.5.5 使用SQL Developer添加、删除检查约束 91
6.5.6 检查约束使用场景 91
6.6 非空约束 91
6.6.1 为列添加非空约束 91
6.6.2 撤销非空约束 93
6.7 默认约束 94
6.7.1 为列添加默认(default)约束 94
6.7.2 删除默认(default)约束 96
6.8 小结 97
第2篇 Oracle查询篇 98
第7章 数据查询 98
7.1 基本查询 98
7.1.1 select语句查询执行步骤 98
7.1.2 为列设置别名 99
7.1.3 利用distinct获得唯一性记录 100
7.1.4 返回查询的部分结果 101
7.2 简单条件查询 101
7.2.1 where子句 102
7.2.2 在查询中使用比较表达式 103
7.2.3 使用简单逻辑表达式 104
7.2.4 指定数据范围 105
7.2.5 有关null值判断 107
7.2.6 like进行模糊查询 107
7.2.7 order by子句 109
7.2.8 group by子句 111
7.2.9 having子句 112
7.3 小结 114
第8章 高级查询 115
8.1 连接简介 115
8.1.1 连接的定义 115
8.1.2 连接的类型 115
8.1.3 简单的多表查询 116
8.2 表的连接查询 118
8.2.1 自然连接 118
8.2.2 内连接 120
8.2.3 外连接 122
8.3 单表中的联合语句 125
8.3.1 union查询 125
8.3.2 union all查询 126
8.3.3 intersect查询 127
8.3.4 minus查询 128
8.4 子查询 128
8.4.1 理解子查询 128
8.4.2 子查询的使用 129
8.4.3 子查询的使用方式及限制 130
8.5 查询语句优化 135
8.5.1 在查询中尽量不使用“*” 136
8.5.2 多表查询中尽量使用表别名 136
8.5.3 条件查询多使用where 136
8.5.4 指定查询范围多使用in 136
8.5.5 子查询中多使用exists语句判断条件 136
8.6 小结 137
第9章 常用函数 138
9.1 聚合函数 138
9.1.1 计数函数count() 138
9.1.2 求和函数sum() 140
9.1.3 均值函数avg() 141
9.1.4 最大值max()和最小值min() 142
9.2 数学函数 143
9.2.1 Oracle中的数值型 143
9.2.2 绝对值、取余、判断数值正负 144
9.2.3 近似值函数、截取、取整函数 145
9.2.4 平方根、乘方运算函数 149
9.2.5 格式化数值——to_char()函数 150
9.3 字符串函数 153
9.3.1 字符型简介 154
9.3.2 删除空格 154
9.3.3 求字符串长度函数 155
9.3.4 字符转换函数 156
9.3.5 连接字符串 159
9.3.6 检索字符串、取子串函数 161
9.4 日期函数 166
9.4.1 获取日期和时间的函数 166
9.4.2 日期和时间差的函数 170
9.5 转换函数 172
9.5.1 类型转换——cast()函数 173
9.5.2 将数值或日期转换为字符串——to char()函数 173
9.5.3 字符转数值——to number()函数 175
9.5.4 字符转日期——to date()函数 176
9.6 null函数 177
9.7 小结 177
第10章 索引 178
10.1 索引简介 178
10.2 索引的创建 178
10.2.1 何时创建索引 178
10.2.2 使用工具创建索引 179
10.2.3 使用OEM创建索引 180
10.2.4 使用语句创建索引 182
10.2.5 创建索引的注意事项 184
10.3 索引的管理 184
10.3.1 修改索引 184
10.3.2 删除索引 189
10.4 小结 192
第11章 视图 193
11.1 Oracle视图 193
11.1.1 视图的概念 193
11.1.2 视图的作用 193
11.1.3 视图的分类 194
11.2 关系视图的创建和使用 194
11.2.1 使用语句创建视图 194
11.2.2 使用SQL Developer创建视图 202
11.2.3 使用OEM创建视图 204
11.2.4 查看及操作访问视图 206
11.2.5 使用SQLDeveloper工具访问视图 212
11.3 内嵌视图的创建和使用 215
11.4 视图的修改 216
11.4.1 使用语句修改视图 216
11.4.2 使用SQLDeveloper工具修改视图 217
11.4.3 使用OEM修改视图 218
11.5 视图的删除 220
11.5.1 使用语句删除视图 220
11.5.2 使用SQLDeveloper工具删除视图 221
11.5.3 使用OEM删除视图 221
11.6 小结 222
第3篇 PL/SQL编程篇 223
第12章 Oracle编程基础 223
12.1 PL/SQL简介 223
12.1.1 PL/SQL基本结构 223
12.1.2 PL/SQL注释 225
12.1.3 PL/SQL基本规则 225
12.1.4 PL/SQL数据类型 226
12.1.5 PL/SQL运算符 227
12.1.6 PL/SQL表达式 229
12.1.7 PL/SQL中变量、常量的定义与使用 230
12.2 PL/SQL中定义类型 233
12.2.1 记录类型 233
12.2.2 集合类型 235
12.3 Oracle中的条件控制语句 238
12.3.1 流程控制——ifelse判断 238
12.3.2 流程控制——case when分支 241
12.4 Oracle中的循环语句 245
12.4.1 无条件循环 245
12.4.2 while循环 247
12.4.3 for循环 248
12.5 小结 250
第13章 游标 251
13.1 什么是游标 251
13.1.1 游标概念 251
13.1.2 游标种类 252
13.2 显式游标 252
13.2.1 创建显式游标步骤 252
13.2.2 游标中的loop语句 256
13.2.3 使用bulk collect和for语句的游标 258
13.2.4 使用for loop语句 260
13.2.5 为游标传递参数 262
13.2.6 显式游标的属性 263
13.3 隐式游标 266
13.3.1 隐式游标的特点 266
13.3.2 隐式游标的属性 267
13.3.3 使用SQL隐式游标 268
13.3.4 使用cursorfor隐式游标 268
13.4 动态(REF)游标 269
13.4.1 强类型动态游标 270
13.4.2 弱类型动态游标 272
13.5 小结 273
第14章 存储过程 274
14.1 存储过程简介 274
14.1.1 认识存储过程 274
14.1.2 存储过程的作用 274
14.2 创建和执行存储过程 275
14.2.1 创建存储过程 275
14.2.2 有参数的存储过程 279
14.2.3 in参数 280
14.2.4 out参数 284
14.2.5 in out参数 286
14.3 用SQL Developer工具创建存储过程 287
14.3.1 创建存储过程 287
14.3.2 调试存储过程 288
14.4 管理存储过程 290
14.4.1 修改存储过程 290
14.4.2 重新编译存储过程 291
14.4.3 删除存储过程 292
14.5 小结 293
第15章 函数和程序包 294
15.1 自定义函数 294
15.1.1 创建自定义函数 294
15.1.2 带参数的函数 297
15.1.3 行转列函数 301
15.1.4 使用SQL Developer创建函数 303
15.1.5 管理函数 305
15.2 程序包 306
15.2.1 程序包说明 306
15.2.2 程序包主体 308
15.2.3 调用程序包中的函数/存储过程 309
15.2.4 删除程序包 309
15.3 小结 309
第16章 触发器 310
16.1 触发器简介 310
16.1.1 认识触发器 310
16.1.2 触发器类型 310
16.1.3 触发器的作用 311
16.2 DML触发器 311
16.3 语句级触发器 313
16.3.1 创建语句级触发器 314
16.3.2 触发器的作用对象与类型 316
16.3.3 多个激活动作 317
16.3.4 触发器谓词 318
16.4 行触发器 322
16.4.1 创建和使用行触发器 323
16.4.2 行触发器的变量引用 326
16.4.3 变量引用与referencing 330
16.4.4 触发器的执行顺序 331
16.4.5 触发器的条件限制 331
16.5 instead of触发器 333
16.5.1 instead of触发器简介 333
16.5.2 创建和使用instead of触发器 334
16.6 DDL触发器 338
16.7 系统事件与用户事件触发器 339
16.7.1 系统事件触发器 339
16.7.2 用户事件触发器 341
16.8 使用SQL Developer工具操作触发器 344
16.9 管理触发器 346
16.9.1 查看触发器 346
16.9.2 设置触发器是否可用 347
16.10 小结 349
第17章 序列 350
17.1 自动生成序号 350
17.2 创建和使用序列 350
17.2.1 创建序列 350
17.2.2 使用序列 352
17.3 序列属性 357
17.3.1 创建序列的注意事项 358
17.3.2 指定序列初始值 358
17.3.3 序列的最大值和最小值 359
17.3.4 序列的增长步长 360
17.3.5 序列循环取值 363
17.3.6 序列缓存大小 364
17.4 小结 367
第18章 事务和锁 368
18.1 什么是事务 368
18.1.1 事务概述 368
18.1.2 事务的ACID特性 369
18.1.3 事务类型 369
18.1.4 事务的状态 370
18.1.5 提交事务 371
18.1.6 事务的保存点 373
18.2 锁 376
18.2.1 并发访问的常见问题 376
18.2.2 锁概述 377
18.2.3 锁分类 377
18.2.4 锁等待和死锁 377
18.2.5 预防死锁 382
18.3 小结 382
第4篇 Oracle维护篇 383
第19章 表空间管理 383
19.1 Oracle 11g的基础结构 383
19.1.1 模式 383
19.1.2 存储结构 384
19.1.3 表空间相关概念 384
19.2 表空间管理 385
19.2.1 查看表空间 385
19.2.2 创建表空间 389
19.2.3 重命名表空间 392
19.2.4 设置表空间的状态 393
19.3 合理利用表空间 394
19.3.1 处理空间不足的情况 394
19.3.2 正确的数据类型 398
19.3.3 回收利用表空间 398
19.4 小结 400
第20章 数据库安全管理 401
20.1 Oracle数据库安全性概述 401
20.2 用户 401
20.2.1 用户简介 401
20.2.2 创建用户 402
20.2.3 用户管理 406
20.3 权限 408
20.3.1 权限简介 408
20.3.2 授予系统权限 411
20.3.3 授予对象权限 414
20.3.4 权限的传递 418
20.3.5 收回对象的权限 420
20.3.6 用户和权限 423
20.4 角色 423
20.4.1 角色简介 424
20.4.2 创建角色 424
20.4.3 为角色授权 426
20.4.4 将一个角色授予另一个角色 428
20.4.5 为用户授予角色 429
20.4.6 禁用和启用角色 430
20.4.7 撤销角色权限 432
20.4.8 删除角色 432
20.5 概要文件 433
20.5.1 创建概要文件 433
20.5.2 概要文件管理 436
20.6 小结 437
第21章 备份与恢复 438
21.1 备份与恢复简介 438
21.1.1 备份 438
21.1.2 恢复 438
21.2 逻辑备份与恢复 438
21.2.1 使用expdp和impdp工具进行逻辑备份和恢复 438
21.2.2 使用OEM进行逻辑备份恢复 441
21.3 脱机备份与脱机恢复 449
21.3.1 脱机备份 449
21.3.2 脱机恢复 450
21.4 联机备份与恢复 450
21.4.1 使用RAMN 450
21.4.2 备份与恢复 453
21.5 小结 455
第22章 控制文件和日志文件 456
22.1 控制文件 456
22.1.1 控制文件概述 456
22.1.2 查询控制文件 456
22.1.3 创建控制文件 457
22.2 日志文件 459
22.2.1 日志文件概述 459
22.2.2 创建日志文件组和日志文件 460
22.2.3 查询日志文件组和日志文件 461
22.3 小结 462