第1章 Oracle关系数据库 1
1.1关系数据模型 1
1.1.1关系数据模型的基本概念 1
1.1.2关系的完整性 3
1.1.3关系与关系模式 3
1.2关系数据库规范化理论 4
1.2.1函数依赖 4
1.2.2范式理论 5
1.3安装Oracle Database 11g 7
1.3.1在Windows环境下的安装过程 7
1.3.2Oracle服务管理 12
1.4实验指导——创建数据库 13
1.5实验指导——Oracle账户解锁 16
第2章 Oracle数据库的体系结构 18
2.1物理存储结构 18
2.1.1数据文件 18
2.1.2控制文件 20
2.1.3重做日志文件 20
2.1.4其他文件 21
2.2逻辑存储结构 22
2.2.1表空间(Tablespace) 22
2.2.2段(Segment) 23
2.2.3区(Extent) 24
2.2.4数据块(Block) 24
2.3Oracle进程结构 25
2.3.1DBWn进程 26
2.3.2LGWR进程 26
2.3.3CKPT进程 27
2.3.4SMON进程 27
2.3.5PMON进程 27
2.3.6ARCn进程 28
2.3.7RECO进程 28
2.4Oracle内存结构 28
2.4.1系统全局区(SGA) 29
2.4.2程序全局区(PGA) 31
2.5数据字典 32
2.5.1Oracle数据字典介绍 32
2.5.2Oracle常用数据字典 33
2.6习题 35
第3章 使用SQL*Plus工具 38
3.1SQL*Plus概述 38
3.1.1SQL*Plus的主要功能 38
3.1.2SQL*Plus连接与断开数据库 39
3.2使用SQL*Plus命令 41
3.2.1使用DESCRIBE命令查看表结构 41
3.2.2使用SQL*Plus语句快速编辑SQL语句 43
3.2.3使用SAVE命令将缓冲区内容保存到文件 44
3.2.4使用GET命令读取文件内容到缓冲区 46
3.2.5使用START命令读取并运行文件内容 46
3.2.6使用EDIT命令编辑缓冲区内容或文件内容 47
3.2.7使用SPOOL命令复制输出结果到文件 47
3.2.8使用临时变量 48
3.2.9使用已定义变量 51
3.3格式化查询结果 53
3.3.1格式化列的显示效果 54
3.3.2设置一页显示多少行数据 55
3.3.3设置一行显示多少个字符 56
3.3.4创建简单报表 57
3.3.5清除列格式 59
3.4实验指导——使用报表统计各部门人数 59
3.5习题 61
第4章 管理表空间 63
4.1基本表空间 63
4.1.1创建表空间 63
4.1.2表空间状态属性 66
4.1.3重命名表空间 68
4.1.4修改表空间中数据文件的大小 69
4.1.5增加表空间的数据文件 70
4.1.6删除表空间的数据文件 70
4.1.7修改表空间中数据文件的自动扩展性 71
4.1.8修改表空间中数据文件的状态 71
4.1.9移动表空间中的数据文件 72
4.1.10删除表空间 73
4.2临时表空间 74
4.2.1创建临时表空间 74
4.2.2创建与管理临时表空间组 74
4.3大文件表空间 76
4.4非标准数据块表空间 77
4.5设置默认表空间 79
4.6撤消表空间 80
4.6.1管理撤消表空间的方式 80
4.6.2创建与管理撤消表空间 81
4.7与表空间和数据文件相关的数据字典 84
4.8实验指导——为图书管理系统创建表空间 84
4.9习题 85
第5章 模式对象 88
5.1表 88
5.1.1数据类型 88
5.1.2创建表 90
5.1.3管理表中的列 90
5.1.4重命名表 93
5.1.5移动表 93
5.1.6截断表 94
5.1.7删除表 94
5.2实验指导——查看UNUSED状态的列 95
5.3表的完整性约束 96
5.3.1约束的分类 96
5.3.2NOT NULL约束 97
5.3.3UNIQUE约束 98
5.3.4PRIMARY KEY约束 99
5.3.5CHECK约束 101
5.3.6FOREIGN KEY约束 101
5.3.7禁用和激活约束 104
5.3.8约束的验证状态 105
5.4实验指导——为图书管理系统创建表 106
5.5索引 108
5.5.1创建B树索引 108
5.5.2创建基于函数的索引 109
5.5.3创建位图索引 110
5.5.4管理索引 110
5.6视图 113
5.6.1创建视图 113
5.6.2对视图执行DML操作 115
5.6.3查询视图的定义信息 118
5.6.4修改与删除视图 119
5.7序列 119
5.7.1创建序列 119
5.7.2使用序列 120
5.7.3修改与删除序列 122
5.8同义词 122
5.9习题 123
第6章 管理控制文件和日志文件 125
6.1管理控制文件 125
6.1.1创建控制文件 125
6.1.2备份控制文件 128
6.1.3恢复控制文件 129
6.1.4移动与删除控制文件 129
6.2管理日志文件 130
6.2.1创建日志文件组及其成员 130
6.2.2修改日志文件 131
6.2.3切换日志文件组 132
6.2.4清空日志文件组 133
6.2.5删除日志文件组及其成员 134
6.3管理归档日志 134
6.3.1设置数据库模式 135
6.3.2设置归档目标 136
6.4习题 137
第7章 SQL语言基础 139
7.1SQL语言概述 139
7.2使用SELECT语句检索数据 141
7.2.1SELECT语句的结构 141
7.2.2FROM子句 143
7.2.3WHERE子句 143
7.2.4ORDER BY子句 146
7.2.5GROUP BY子句 147
7.2.6HAVING子句 148
7.2.7DISTINCT关键字 149
7.2.8算术运算符 150
7.3实验指导——统计各出版社今年的图书数量 151
7.4使用其他DML语句 151
7.4.1INSERT语句 151
7.4.2UPDATE语句 153
7.4.3DELETE语句 153
7.4.4MERGE语句 154
7.5使用函数 156
7.5.1字符串函数 156
7.5.2数字函数 158
7.5.3日期时间函数 159
7.5.4转换函数 160
7.5.5正则表达式函数 162
7.5.6聚合函数 164
7.6实验指导——统计各出版社最近一个月出版的图书数 165
7.7事务处理 166
7.7.1事务的概念和特性 166
7.7.2事务处理 166
7.8习题 168
第8章 子查询与高级查询 171
8.1子查询 171
8.1.1子查询的类型 171
8.1.2在WHERE子句中使用子查询 172
8.1.3在HAVING子句中使用子查询 173
8.1.4使用IN操作符实现指定匹配查询 174
8.1.5使用ANY操作符实现任意匹配查询 176
8.1.6使用ALL操作符实现全部匹配查询 176
8.1.7实现多列子查询 177
8.1.8实现关联子查询 178
8.1.9实现嵌套子查询 180
8.1.10在UPDATE和DELETE语句中使用子查询 181
8.2实验指导——获取借阅次数最多的前5本图书 181
8.3高级查询 182
8.3.1使用等号(=)实现多个表的简单连接 182
8.3.2使用表的别名 184
8.3.3使用INNER JOIN实现多个表的内连接 184
8.3.4使用OUTER JOIN实现多个表的外连接 188
8.3.5使用CROSS JOIN实现交叉连接 189
8.3.6使用UNION操作符获取两个结果集的并集 190
8.3.7使用INTERSECT操作符获取两个结果集的交集 192
8.3.8使用MINUS操作符获取两个结果集的差集 192
8.4实验指导——各类图书的借阅情况 194
8.5习题 194
第9章 PL/SQL基础 196
9.1PL/SQL 196
9.1.1PL/SQL程序块的基本结构 196
9.1.2常量和变量 197
9.1.3%TYPE类型和%RO WTYPE类型 199
9.1.4PL/SQL记录类型和表类型 201
9.1.5PL/SQL程序注释 203
9.2条件选择语句 204
9.2.1IF条件语句 204
9.2.2CASE表达式 205
9.3实验指导——在SELECT语句中使用CASE表达式 207
9.4循环语句 208
9.4.1LOOP循环语句 208
9.4.2WHILE循环语句 209
9.4.3FOR循环语句 209
9.5游标 210
9.5.1声明游标 210
9.5.2打开游标 211
9.5.3检索游标 212
9.5.4关闭游标 212
9.5.5简单游标循环 212
9.5.6游标FOR循环 214
9.5.7使用游标更新数据 214
9.6异常 215
9.6.1异常处理 215
9.6.2预定义异常 215
9.6.3非预定义异常 217
9.6.4自定义异常 218
9.7实验指导——更新图书价格 219
9.8习题 220
第10章 存储过程、函数、触发器和包 223
10.1存储过程 223
10.1.1创建与调用存储过程 223
10.1.2带参数的存储过程 225
10.1.3修改与删除存储过程 228
10.1.4查询存储过程的定义信息 228
10.2函数 228
10.3实验指导——使用存储过程与函数查询图书信息 229
10.4触发器 232
10.4.1触发器的类型 232
10.4.2创建触发器 232
10.4.3DML触发器 233
10.4.4INSTEAD OF触发器 235
10.4.5系统事件触发器 236
10.4.6DDL触发器 237
10.4.7禁用与启用触发器 237
10.4.8修改与删除触发器 238
10.5程序包 238
10.5.1创建程序包 238
10.5.2调用程序包中的元素 240
10.5.3删除程序包 240
10.6实验指导——使用触发器自动为主键列赋值 240
10.7习题 241
第11章 其他表类型 244
11.1临时表 244
11.1.1临时表的特点 244
11.1.2临时表的类别 245
11.1.3临时表的创建与使用 245
11.2外部表 247
11.2.1使用外部表读取外部文件 248
11.2.2使用REJECT LIMIT子句 249
11.2.3使用BADFILE子句 251
11.2.4使用LOGFILE子句 252
11.3分区表 253
11.3.1使用RANGE关键字创建范围分区表 254
11.3.2使用HASH关键字创建散列分区表 255
11.3.3使用LIST关键字创建列表分区表 255
11.3.4创建组合范围散列分区表 256
11.3.5创建组合范围列表分区表 257
11.3.6增加分区 258
11.3.7合并与删除分区 260
11.4实验指导——从Excel电子表格生成图书信息表 260
11.5习题 262
第12章 用户权限与安全 264
12.1用户 264
12.1.1创建用户 264
12.1.2修改用户 265
12.1.3删除用户 266
12.1.4管理用户会话 267
12.2用户配置文件 268
12.2.1创建用户配置文件 268
12.2.2使用配置文件 270
12.2.3查看配置文件信息 270
12.2.4修改与删除配置文件 271
12.3权限 271
12.3.1系统权限 271
12.3.2对象权限 274
12.4角色 278
12.4.1创建角色 279
12.4.2为角色授予权限 279
12.4.3为用户授予角色 279
12.4.4修改用户的默认角色 280
12.4.5管理角色 281
12.4.6与角色相关的数据字典 282
12.5实验指导——为图书管理系统创建用户 283
12.6习题 285
第13章 SQL语句优化 287
13.1一般的SQL优化技巧 287
13.1.1SELECT语句中避免使用“*” 287
13.1.2使用WHERE子句替代HAVING子句 288
13.1.3使用TRUNCATE替代DELETE 289
13.1.4在确保完整性的情况下多用COMMIT语句 290
13.1.5使用表连接而不是多个查询 290
13.1.6使用EXISTS替代IN 291
13.1.7使用EXISTS替代DISTINCT 291
13.1.8使用“<=”替代“<” 292
13.1.9使用完全限定的列引用 293
13.2表的连接方法 293
13.2.1FROM子句中表的顺序 294
13.2.2WHERE子句的连接顺序 294
13.3有效使用索引 295
13.3.1创建索引的基本原则 295
13.3.2索引列上所使用的操作符 296
13.3.3避免对唯一索引列使用NULL值 296
13.3.4选择复合索引主列 296
13.3.5监视索引是否被使用 297
13.4习题 298
第14章 数据加载与传输 300
14.1Data Pump工具的概述 300
14.2使用Data Pump工具前的准备 302
14.3使用Data Pump Export导出数据 303
14.3.1Data Pump Export导出选项 303
14.3.2实现数据导出 308
14.4使用Data Pump Import导入数据 313
14.4.1Data Pump Import导入选项 313
14.4.2实现数据导入 316
14.5使用EXPDP和IMPDP工具传输表空间 319
14.6实验指导——导出和导入bookspace表空间 321
14.7习题 322
第15章 使用RMAN工具 324
15.1RMAN简介 324
15.2RMAN操作 326
15.2.1创建恢复目录 326
15.2.2连接到目标数据库 327
15.2.3RMAN命令 329
15.2.4RMAN操作目标数据库 330
15.2.5设置RMAN 332
15.2.6RMAN数据字典 333
15.3RMAN备份 334
15.3.1BACKUP命令 334
15.3.2完全备份 336
15.3.3备份表空间 338
15.3.4增量备份 339
15.3.5镜像复制 340
15.4RMAN恢复 341
15.4.1数据库非归档恢复 341
15.4.2数据库归档恢复 342
15.4.3数据块恢复 343
15.4.4恢复表空间 344
15.5备份恢复与导出导入的区别和联系 345
15.6实验指导——备份和恢复bookspace表空间 345
15.7习题 346
第16章 Oracle Database 11g闪回技术 349
16.1闪回表(Flashback Table) 349
16.2闪回删除(Flashback Drop) 351
16.2.1回收站(RecycleBin) 352
16.2.2使用闪回删除 354
16.3闪回版本查询(Flashback Version Query) 355
16.4闪回事务查询(Flashback Transaction Query) 356
16.5闪回数据库(Flashback Database) 358
16.5.1闪回数据库设置 358
16.5.2使用闪回数据库 359
16.6闪回数据归档(Flashback Data Archive) 362
16.6.1创建与管理闪回数据归档区 362
16.6.2为表指定闪回数据归档区 364
16.6.3使用闪回数据归档 365
16.7习题 365
第17章 宠物商店管理系统 368
17.1系统分析 368
17.1.1需求分析 368
17.1.2系统设计 368
17.2创建系统数据库 369
17.2.1创建表空间和用户 369
17.2.2创建类别表 370
17.2.3创建宠物表 370
17.2.4主键自增设计 371
17.3系统实现 372
17.3.1数据库连接类 372
17.3.2添加宠物 374
17.3.3宠物列表 379
17.3.4修改宠物信息 383
第18章 通讯录 386
18.1通讯录系统分析 386
18.1.1需求分析 386
18.1.2技术实现 386
18.2系统数据库设计 387
18.3功能实现 389
18.3.1添加联系人 389
18.3.2联系人列表 391
18.3.3查询联系人 393
18.3.4删除联系人 397
参考答案 399