丛书序
前言
第一篇 数据库安装篇
第1章 Oracle 11g数据库简介 1
1.1 认识Oracle 11g 1
1.1.1 Oracle的成长历程 1
1.1.2 了解最新版本Oracle 11g 2
1.1.3 Oracle与SQL Server 2
1.2 回忆Oracle的产品版本 3
1.3 学习Oracle 11g的新特性 4
1.3.1 数据库管理部分 4
1.3.2 PL/SQL部分 5
1.4 小结 5
1.5 习题 5
第2章 Oracle 11g的安装与测试 6
2.1 使用Oracle 11g的基本条件 6
2.1.1 硬件条件 6
2.1.2 软件条件 6
2.2 在Windows 2003系统中安装Oracle 11g 7
2.2.1 获取Oracle 11g的安装文件 7
2.2.2 安装Oracle 11g 8
2.2.3 安装中遇到的问题 16
2.3 移除Oracle 11g 17
2.3.1 停止服务列表的5个服务 17
2.3.2 卸载Oracle产品 18
2.3.3 删除注册表项 18
2.3.4 删除环境变量 19
2.3.5 删除目录并重启计算机 19
2.4 小结 19
2.5 习题 20
第二篇 数据库基础篇
第3章 熟悉数据库 21
3.1 什么是数据库 21
3.1.1 了解数据管理的历史 21
3.1.2 数据库的模型 23
3.1.3 学习数据库的三级模式和二级映像 25
3.1.4 数据库中的相关术语 26
3.1.5 数据库设计的完整性 28
3.2 范式-设计关系型数据库的准则 28
3.2.1 第一范式-关系型数据库设计的第一步 29
3.2.2 第二范式-关系型数据库设计的第二步 29
3.2.3 第三范式-关系型数据库设计的第三步 30
3.3 绘制E-R图设计数据库 30
3.3.1 绘制E-R图的基本要素 30
3.3.2 E-R图绘制实例 31
3.4 小结 33
3.5 习题 33
第4章 SQL基础 34
4.1 SQL-数据库沟通的语言标准 34
4.1.1 什么是SQL 34
4.1.2 了解SQL的种类 34
4.2 Oracle 11g中支持的数据类型 35
4.2.1 查看Oracle 11g中的数据类型 35
4.2.2 常用数据类型 37
4.3 数据定义语言(DDL) 38
4.3.1 使用Create语句创建表 38
4.3.2 使用Alter语句修改表 39
4.3.3 使用Drop语句删除表 41
4.4 约束的使用 41
4.4.1 主键约束 41
4.4.2 外键约束 42
4.4.3 CHECK约束 44
4.4.4 UNIQUE约束 45
4.4.5 NOT NULL约束 46
4.5 数据操纵语言(DML)和数据查询语言(DQL) 47
4.5.1 添加数据就用INSERT 48
4.5.2 修改数据就用UPDATE 50
4.5.3 删除数据就用DELETE 51
4.5.4 查询数据就用SELECT 51
4.5.5 其他数据操纵语句 52
4.6 数据控制语言(DCL) 55
4.7 小结 55
4.8 习题 55
第5章 利用SELECT检索数据 56
5.1 查询数据必备SELECT 56
5.1.1 SELECT语句语法 56
5.1.2 获取指定字段的数据 57
5.1.3 获取所有字段的数据 58
5.1.4 使用别名替代表中的字段名 59
5.1.5 使用表达式操作查询的字段 59
5.1.6 使用函数操作查询的字段 60
5.1.7 去除检索数据中的重复记录 60
5.2 检索出来的数据排序 61
5.2.1 使用排序的语法 61
5.2.2 使用升序和降序来处理数据 62
5.2.3 排序时对NULL值的处理 62
5.2.4 使用别名作为排序字段 63
5.2.5 使用表达式作为排序字段 64
5.2.6 使用字段的位置作为排序字段 64
5.2.7 使用多个字段排序 65
5.3 使用WHERE子句设置检索条件 66
5.3.1 查询中使用单一条件限制 66
5.3.2 查询中使用多个条件限制 67
5.3.3 模糊查询数据 68
5.3.4 查询条件限制在某个列表范围之内 69
5.3.5 专门针对NULL值的查询 70
5.4 GROUP BY和HAVING子句 70
5.4.1 GROUP BY子句语法及使用 70
5.4.2 HAVING子句的使用 72
5.5 使用子查询 73
5.5.1 子查询返回单行 73
5.5.2 子查询返回多行 74
5.6 连接查询 76
5.6.1 最简单的连接查询 76
5.6.2 内连接 77
5.6.3 自连接 78
5.6.4 外连接 79
5.7 小结 82
5.8 习题 82
第6章 Oracle内置函数 83
6.1 数值型函数 83
6.1.1 绝对值、取余、判断数值正负函数 83
6.1.2 三角函数 84
6.1.3 返回以指定数值为准整数的函数 84
6.1.4 指数、对数函数 85
6.1.5 四舍五入截取函数 86
6.2 字符型函数 86
6.2.1 ASCII码与字符转换函数 86
6.2.2 获取字符串长度函数 87
6.2.3 字符串截取函数 87
6.2.4 字符串连接函数 88
6.2.5 字符串搜索函数 88
6.2.6 字母大小写转换函数 88
6.2.7 带排序参数的字母大小写转换函数 89
6.2.8 为指定参数排序函数 90
6.2.9 替换字符串函数 91
6.2.10 字符串填充函数 91
6.2.11 删除字符串首尾指定字符的函数 92
6.2.12 字符集名称和ID互换函数 93
6.3 日期型函数 93
6.3.1 系统日期、时间函数 93
6.3.2 得到数据库时区函数 94
6.3.3 为日期加上指定月份函数 94
6.3.4 返回指定月份最后一天函数 95
6.3.5 返回指定日期后一周的日期函数 95
6.3.6 返回会话所在时区当前日期函数 95
6.3.7 提取指定日期特定部分的函数 96
6.3.8 得到两个日期之间的月份数 96
6.3.9 时区时间转换函数 97
6.3.10 日期四舍五入、截取函数 97
6.4 转换函数 98
6.4.1 字符串转ASCII类型字符串函数 98
6.4.2 二进制转十进制函数 98
6.4.3 数据类型转换函数 99
6.4.4 字符串和ROWID相互转换函数 99
6.4.5 字符串在字符集间转换函数 100
6.4.6 十六进制字符串与RAW类型相互转换函数 100
6.4.7 数值转换成字符型函数 101
6.4.8 字符转日期型函数 101
6.4.9 字符串转数字函数 102
6.4.10 全角转半角函数 102
6.5 NULL函数 102
6.5.1 返回表达式为NULL的函数 103
6.5.2 排除指定条件函数 103
6.5.3 替换NULL值函数 103
6.6 集合函数 104
6.6.1 求平均值函数 104
6.6.2 求记录数量函数 105
6.6.3 返回最大、最小值函数 106
6.6.4 求和函数 106
6.7 其他函数 107
6.7.1 返回登录名函数 107
6.7.2 返回会话以及上下文信息函数 107
6.7.3 表达式匹配函数 108
6.8 小结 108
6.9 习题 109
第7章 PL/SQL基础 110
7.1 什么是PL/SQL 110
7.1.1 认识PL/SQL 110
7.1.2 PL/SQL的优势 111
7.1.3 PL/SQL的结构 112
7.1.4 PL/SQL的基本规则 114
7.1.5 PL/SQL中的注释 115
7.2 PL/SQL 变量的使用 116
7.2.1 变量、常量的类型及语法 116
7.2.2 标量类型的变量 117
7.2.3 复合类型的变量 120
7.3 表达式 127
7.3.1 数值表达式 127
7.3.2 关系表达式和逻辑表达式 128
7.4 PL/SQL结构控制 129
7.4.1 IF条件控制语句 129
7.4.2 CASE条件控制语句 135
7.4.3 LOOP循环控制语句 138
7.5 PL/SQL中使用DML和DDL语言 144
7.5.1 DML语句的使用 144
7.5.2 DDL语句的使用 146
7.6 PL/SQL中的异常 147
7.6.1 什么是异常 147
7.6.2 处理异常的语法 147
7.6.3 预定义异常 148
7.6.4 非预定义异常 149
7.6.5 自定义异常 150
7.7 PL/SQL函数编写 152
7.7.1 函数的组成 152
7.7.2 函数语法 152
7.7.3 查看函数 155
7.7.4 在PL/SQL Developer中创建函数 157
7.7.5 函数的修改、删除 158
7.8 小结 159
7.9 习题 159
第8章 游标-数据的缓存区 161
8.1 什么是游标 161
8.1.1 游标的概念 161
8.1.2 游标的种类 161
8.2 显式游标 162
8.2.1 游标语法 162
8.2.2 游标的使用步骤 162
8.2.3 游标中的LOOP语句 164
8.2.4 使用BULK COLLECT和FOR语句的游标 165
8.2.5 使用CURSOR FOR LOOP 167
8.2.6 显式游标的属性 167
8.2.7 带参数的游标 171
8.3 隐式游标 172
8.3.1 隐式游标的特点 172
8.3.2 游标中使用异常处理 173
8.3.3 隐式游标的属性 174
8.4 有关游标的案例 177
8.5 小结 181
8.6 习题 181
第9章 视图-数据库中虚拟的表 182
9.1 什么是视图 182
9.1.1 认识视图 182
9.1.2 视图的作用 182
9.1.3 视图的语法 183
9.2 视图的创建 183
9.2.1 创建单表视图 183
9.2.2 创建多表视图 185
9.2.3 创建视图的视图 187
9.2.4 创建没有源表的视图 188
9.2.5 使用PL/SQL工具创建视图 188
9.2.6 创建带约束的视图 191
9.2.7 有关视图的案例 192
9.3 操作视图数据的限制 194
9.3.1 视图READ ONLY设置 194
9.3.2 视图CHECK OPTION设置 195
9.3.3 视图创建语句对视图操作的影响 196
9.4 视图的修改 196
9.4.1 视图结构的修改 197
9.4.2 视图约束的修改 198
9.5 视图的删除 199
9.6 小结 200
9.7 习题 201
第10章 存储过程-提高程序执行的效率 202
10.1 什么是存储过程 202
10.1.1 认识存储过程 202
10.1.2 存储过程的作用 202
10.1.3 存储过程的语法 203
10.2 在SQL*Plus中创建存储过程 203
10.2.1 创建第一个存储过程 203
10.2.2 查看存储过程 205
10.2.3 显示存储过程的错误 205
10.2.4 无参存储过程 206
10.2.5 存储过程中使用游标 208
10.2.6 存储过程中的DDL语句 209
10.2.7 有参存储过程 213
10.3 使用PL/SQL工具创建存储过程 220
10.3.1 在PL/SQL Developer中创建存储过程 220
10.3.2 调试存储过程 224
10.4 修改、删除存储过程 225
10.4.1 修改存储过程 226
10.4.2 删除存储过程 227
10.5 小结 227
10.6 习题 227
第11章 触发器-保证数据的正确性 228
11.1 什么是触发器 228
11.1.1 认识触发器 228
11.1.2 触发器的作用 228
11.1.3 触发器的类型 229
11.1.4 触发器的语法 230
11.2 使用SQL*Plus操作触发器 232
11.2.1 利用SQL*Plus创建触发器 233
11.2.2 查看触发器 233
11.2.3 DML类型触发器 234
11.2.4 触发器执行顺序 244
11.2.5 复合类型触发器 245
11.2.6 INSTEAD OF类型触发器 248
11.2.7 DDL类型触发器 249
11.2.8 用户和系统事件触发器 251
11.3 使用PL/SQL工具操作触发器 252
11.3.1 在PL/SQL Developer中创建触发器 252
11.3.2 设置触发器是否可用 254
11.4 修改、删除触发器 255
11.4.1 修改触发器 255
11.4.2 删除触发器 256
11.5 小结 256
11.6 习题 257
第12章 事务和锁-确保数据安全 258
12.1 什么是事务 258
12.1.1 认识事务 258
12.1.2 事务的类型 259
12.1.3 事务的保存点 261
12.1.4 事务的ACID特性 262
12.2 什么是锁 262
12.2.1 认识锁 263
12.2.2 锁的分类 263
12.2.3 锁的类型 263
12.2.4 锁等待与死锁 265
12.3 小结 269
12.4 习题 269
第三篇 数据库管理篇
第13章 使用Oracle 11g Enterprise Manager 271
13.1 什么是Oracle 11g Enterprise Manager 271
13.1.1 Oracle 11g Enterprise Manager概述 271
13.1.2 启动OEM 272
13.2 使用OEM管理Oracle 273
13.2.1 OEM中的性能菜单 273
13.2.2 OEM中的可用性菜单 274
13.2.3 OEM中的服务器菜单 275
13.2.4 OEM中的方案菜单 292
13.2.5 OEM中的数据移动菜单 302
13.2.6 OEM中的软件和支持菜单 302
13.3 小结 303
13.4 习题 303
第14章 常用工具介绍 304
14.1 什么是SQL*Plus 304
14.1.1 SQL*Plus简介 304
14.1.2 启动SQL*Plus 304
14.2 使用SQL*Plus 305
14.2.1 使用SQL*Plus编辑命令 306
14.2.2 使用SQL*Plus保存命令 310
14.2.3 使用SQL*Plus运行命令 311
14.2.4 使用SQL*Plus格式化查询结果 311
14.2.5 在SQL*Plus中为语句添加注释 319
14.3 使用PL/SQL Developer 321
14.3.1 PL/SQL Developer的安装 321
14.3.2 PL/SQL Developer的布局 322
14.4 小结 323
14.5 习题 323
第15章 控制文件和日志文件 324
15.1 控制文件与日志文件概述 324
15.1.1 什么是控制文件 324
15.1.2 什么是日志文件 325
15.2 初识控制文件 326
15.2.1 控制文件的内容 326
15.2.2 更新控制文件 327
15.3 控制文件的多路复用 328
15.3.1 使用init.ora多路复用控制文件 328
15.3.2 使用SPFILE多路复用控制文件 328
15.4 创建控制文件 330
15.5 日志文件的管理 332
15.5.1 新建日志文件组 332
15.5.2 添加日志文件到日志文件组 335
15.5.3 删除日志文件组和日志文件 336
15.5.4 查询日志文件组和日志文件 338
15.6 小结 339
15.7 习题 339
第16章 表空间的管理 340
16.1 表空间概述 340
16.1.1 相关概念 340
16.1.2 默认表空间 340
16.2 表空间的管理 343
16.2.1 创建表空间 343
16.2.2 重命名表空间 345
16.2.3 设置表空间的读写状态 346
16.2.4 设置表空间的可用状态 347
16.2.5 建立大文件表空间 348
16.2.6 删除表空间 349
16.3 临时表空间的管理 350
16.3.1 建立临时表空间 350
16.3.2 查询临时表空间 351
16.3.3 创建临时表空间组 351
16.3.4 查询临时表空间组 354
16.3.5 删除临时表空间组 355
16.4 数据文件管理 356
16.4.1 移动数据文件 356
16.4.2 删除数据文件 356
16.5 小结 358
16.6 习题 358
第17章 与数据库安全性有关的对象 359
17.1 用户管理 359
17.1.1 什么是用户管理 359
17.1.2 创建用户 359
17.1.3 修改用户信息 363
17.1.4 删除用户 364
17.2 权限管理 365
17.2.1 什么是权限管理 365
17.2.2 授予权限 365
17.2.3 撤销权限 369
17.2.4 查询用户的权限 370
17.3 角色管理 372
17.3.1 什么是角色 372
17.3.2 创建角色 372
17.3.3 设置角色 375
17.3.4 修改角色 376
17.3.5 删除角色 376
17.3.6 查询角色 377
17.4 概要文件PROFILE 377
17.4.1 什么是PROFILE 377
17.4.2 创建PROFILE 377
17.4.3 修改PROFILE 380
17.4.4 删除PROFILE 381
17.4.5 查询PROFILE 381
17.5 小结 382
17.6 习题 382
第18章 备份与恢复 383
18.1 数据库备份与恢复 383
18.1.1 什么是数据库备份 383
18.1.2 什么是数据库恢复 383
18.2 物理备份和恢复数据库 383
18.2.1 对数据库进行脱机备份 384
18.2.2 对数据库进行联机备份 384
18.3 逻辑备份和恢复数据库 387
18.3.1 逻辑导出数据 387
18.3.2 逻辑导入数据 391
18.4 小结 392
18.5 习题 392
第19章 使用RMAN工具 393
19.1 RMAN概述 393
19.1.1 RMAN的特点 393
19.1.2 与RMAN有关的概念 393
19.2 使用恢复目录 394
19.2.1 创建恢复目录 394
19.2.2 使用RMAN连接 396
19.2.3 在恢复目录中注册数据库 398
19.2.4 使用企业管理器创建恢复目录 398
19.3 通道分配 401
19.3.1 什么是通道分配 401
19.3.2 手动通道分配 401
19.3.3 自动通道分配 404
19.4 备份集 405
19.4.1 什么是备份集 405
19.4.2 BACKUP的使用 405
19.5 从备份中恢复 406
19.5.1 使用RESTORE还原 406
19.5.2 使用RECOVER恢复 407
19.6 小结 407
19.7 习题 407
第四篇 数据库应用篇
第20章 在线考试系统数据库设计 409
第22章 在Java中连接Oracle 436