标题：数据库系统原理与应用:Oracle版
图书信息
书名：数据库系统原理与应用：Oracle版
作者：青岛东合信息技术有限公司，青岛海尔软件有限公司编著  　　ISBN 978-7-121-11269-0
出版日期：2010年8月 
定价：59.00元
开本：16开 
页码：452页
本书特点
本书重点突出、偏重应用，结合理论篇的实例和实践篇对贯穿案例的讲解、剖析及实现，使读者能迅速理解并掌握知识，全面提高动手能力。　　本书适用面广，可作为本科计算机科学与技术、软件外包专业、高职高专计算机软件、计算机网络、计算机信息管理、电子商务和经济管理等专业的程序设计课程的教材。
前  言
随着IT产业的迅猛发展，企业对应用型人才的需求越来越大。“全面贴近企业需求，无缝打造专业实用人才”是目前高校计算机专业教育的革新方向。
该系列教材是面向高等院校软件专业方向的标准化教材。教材研发充分结合软件企业的用人需求，经过了充分的调研和论证，并充分参照多所高校一线专家的意见，具有系统性、实用性等特点。旨在使读者在系统掌握软件开发知识的同时，着重培养其综合应用能力和解决问题的能力。
该系列教材具有如下几个特色。
1. 以应用型人才为导向来培养学生
强调实践：本系列教材以应用型软件及外包人才为培养目标，在原有体制教育的基础上对课程进行了改革，强化“应用型”技术的学习，使学生在经过系统、完整的学习后能够达到如下要求：
具备软件开发工作所需的理论知识和操作技能，能熟练地进行编码工作，并掌握软件开发过程的规范。
具备一定的项目经验，包括代码的调试、文档编写、软件测试等内容。
相当于一年的软件开发经验。
2. 以实用技能为核心来组织教学
二八原则：遵循企业生产过程中的“二八原则”，即企业生产过程中80%的时间在使用20%的核心技术，强调核心教学，即学生在学校用80%的学习时间来掌握企业中所用到的核心技术，从而保证对企业常用技术的掌握。教材内容精而专，同时配以知识拓展和拓展练习，以满足不同层次的教学和学习需求。
3. 以新颖的教材架构来引导学习
自成体系：本系列教材采用的教材架构打破了传统的以知识为标准编写教材的方法，采用“全真案例”和“任务驱动”的组织模式。
理论篇：即最小教学集，包含了“二八原则”中提到的常用技术，以任务驱动引导知识点的学习，所选任务不但典型、实用，而且具有很强的趣味性和可操作性，引导学生循序渐进地理解和掌握这些知识和技能，培养学生的逻辑思维能力，掌握利用开发语言进行程序设计的必备知识和技巧。
实践篇：多点于一线，以完整的具体案例贯穿始终，力求使学生在动手实践的过程中，加深课程内容的理解，培养学生独立思考和解决问题的能力，并配备相关知识的拓展讲解和拓展练习，拓宽学生的知识面。
结构灵活：本系列教材在内容设置上借鉴了软件开发中“低耦合高内聚”的设计理念，组织架构上遵循软件开发中的MVC理念，即在课程的实施过程中各高校可根据自身的实际情况（课程配比、时间安排、学生水平、教学情况等），在保证最小教学集的前提下可对整个课程体系进行横向（章节内容）、纵向（章节）裁剪。
4. 提供全面的教辅产品来辅助教学实施
为充分体现“实境耦合”的教学模式，方便教学实施，另外还开发了可配套使用的项目实训教材和全套教辅产品，可供各院校选购：
项目篇：多线于一面，以辅助教材的形式，提供适应当前课程（及先行课程）的综合项目，遵循软件开发过程，进行讲解、分析、设计、指导，注重工作过程的系统性，培养学生解决实际问题的能力，是实施“实境”教学的关键环节。
立体配套：为适应教学模式和教学方法的改革，本系列教材提供完备的教辅产品，主要包括教学指导、实验指导、电子课件、习题集、实践案例等内容，并配以相应的网络教学资源。教学实施方面，提供全方位的解决方案（课程体系解决方案、实训解决方案、教师培训解决方案和就业指导解决方案等），以适应软件开发教学过程的特殊性。
本系列教材由青岛海尔软件有限公司和青岛东合信息技术有限公司共同研制，历时两年，参与编著的有张磊、丁春强、赵克玲、高峰、张旭平、孙更新、宾晟、胡芳、侯天超、邵峰晶、于忠清、韩敬海、曹宝香、崔文善、肖孟强等。本书的特约策划人为吕蕾女士。参与本书编写工作的还有：青岛农业大学、潍坊学院、青岛大学、山东科技大学、曲阜师范大学、济宁学院、中国海洋大学、青岛科技大学、济宁医学院等高校，期间得到了各合作院校专家及一线教师的大力支持和协作。在此技术丛书出版之际要特别感谢给予我们开发团队大力支持和帮助的领导及同事，感谢合作院校的师生给予我们的支持和鼓励，更要感谢开发团队每一位成员所付出的艰辛劳动。如有意见及建议，请发邮件。
iTeacher@ 教研组
2010年7月
目  录
理论篇 1
第1章  数据库概述 2
1.1  数据库概述 3
1.1.1  数据库相关概念 3
1.1.2  数据库管理技术的产生和发展 5
1.1.3  数据库系统的特点 7
1.2  数据模型 8
1.2.1  数据模型的组成三要素 8
1.2.2  概念模型 9
1.2.3  最常用的数据模型 11
1.3  数据库系统体系结构 15
1.3.1  数据库系统模式 16
1.3.2  三级体系结构 16
1.3.3  数据库的二级映像功能 17
1.3.4  数据库系统的组成 17
1.4  数据库的应用 18
1.4.1  数据库技术应用领域 18
1.4.2  数据库未来的发展趋势 19
1.4.3  常用数据库系统简介 20
小结 21
练习 22
第2章  关系数据库介绍 24
2.1  关系模型概述 25
2.2  关系数据结构及形式化定义 26
2.2.1  关系 26
2.2.2  关系模型 29
2.2.3  关系的完整性 31
2.3  关系代数 33
2.3.1  关系代数中的运算符 33
2.3.2  传统的集合运算 34
2.3.3  专门的关系运算 36
小结 41
练习 42
第3章  关系数据库理论 45
3.1  规范化理论 46
3.1.1  规范化理论的提出 46
3.1.2  函数依赖 49
3.1.3  函数依赖定义的码 52
3.1.4  范式的概念及各范式之间的联系 52
3.1.5  多值依赖 61
3.1.6  规范化的基本思想 63
3.2  数据库设计 64
3.2.1  数据库设计的特点 65
3.2.2  需求分析 67
3.2.3  数据流图和数据字典 69
3.3  概念结构设计 71
3.3.1  概念结构设计的定义 71
3.3.2  概念结构设计的方法和步骤 72
3.3.3  数据抽象 73
3.3.4  E-R图的生成 74
3.4  逻辑结构设计 78
3.4.1  E-R图向关系模型的转换 78
3.5  物理设计 82
3.5.1  数据库物理设计的步骤 82
3.5.2  数据库物理设计的内容和方法 84
3.5.3  关系模式存取方法的选择 85
小结 87
练习 88
第4章  SQL 91
4.1  SQL语言概述 93
4.1.1  SQL语言特点 93
4.1.2  SQL分类 94
4.1.3  SQL语句编写规则 95
4.2  数据查询 95
4.2.1  列查询 95
4.2.2  条件查询 97
4.2.3  算术运算符 97
4.2.4  排序 98
4.2.5  联合查询 99
4.3  多表查询 100
4.3.1  内连接 100
4.3.2  外连接 102
4.4  子查询 105
4.4.1  单行和多行子查询 106
4.4.2  多列子查询 108
4.4.3  相关子查询 109
小结 110
练习 110
第5章  函数 112
5.1  函数概述 115
5.2  单行函数 115
5.2.1  数值型函数 115
5.2.2  字符函数 119
5.2.3  日期时间函数 124
5.2.4  转换函数 129
5.2.5  其他函数 133
5.3  数据分组 136
5.3.1  分组函数 136
5.3.2  分组语句 138
小结 140
练习 140
第6章  表 142
6.1  表 144
6.1.1  创建表 144
6.1.2  修改表 148
6.1.3  删除表 149
6.2  索引 150
6.2.1  创建索引 150
6.2.2  维护索引 152
6.2.3  索引使用原则 153
6.3  约束 153
6.3.1  创建约束 154
6.3.2  维护约束 159
小结 161
练习 161
第7章  数据维护 163
7.1  插入数据 165
7.1.1  插入单行数据 165
7.1.2  表的数据复制 167
7.2  更新数据 168
7.2.1  使用表达式更新数据 168
7.2.2  使用子查询更新数据 169
7.3  删除数据 170
7.4  DML事务处理 171
小结 174
练习 175
第8章  视图 176
8.1  视图概述 178
8.2  建立视图 180
8.2.1  简单视图 180
8.2.2  复杂视图 181
8.2.3  连接视图 182
8.2.4  只读视图 183
8.2.5  CHECK约束 183
8.3  维护视图 184
8.3.1  修改视图 184
8.3.2  重新编译视图 184
8.3.3  删除视图 185
小结 185
练习 185
第9章  PL/SQL基础 187
9.1  PL/SQL简介 189
9.1.1  PL/SQL概述 189
9.1.2  PL/SQL结构 189
9.1.3  PL/SQL块分类 191
9.1.4  注释 192
9.2  基本数据类型 192
9.2.1  标量变量 193
9.2.2  使用%TYPE 195
9.3  记录类型 196
9.3.1  自定义PL/SQL记录类型 196
9.3.2  %ROWTYPE记录类型 197
9.4  集合类型 198
9.4.1  PL/SQL一维表 198
9.4.2  PL/SQL多维表 200
9.4.3  嵌套表 200
9.4.4  可变数组 202
9.4.5  集合方法 202
9.5  运算符与表达式 205
9.5.1  运算符 205
9.5.2  表达式 206
9.6  流程控制语句 207
9.6.1  条件分支语句 207
9.6.2  CASE语句 209
9.6.3  循环语句 211
9.6.4  GOTO语句 213
小结 213
练习 214
第10章  游标和异常处理 216
10.1  游标 218
10.1.1  显式游标 218
10.1.2  使用游标 220
10.1.3  游标FOR循环 223
10.1.4  游标修改和删除操作 224
10.2  游标变量 226
10.2.1  游标变量定义 226
10.2.2  游标变量操作 228
10.3  异常处理 229
10.3.1  异常简介 230
10.3.2  异常处理 230
小结 234
练习 235
第11章  PL/SQL程序单元 236
11.1  存储过程 238
11.1.1  存储过程概述 238
11.1.2  无参存储过程 239
11.1.3  带输入参数的存储过程 239
11.1.4  带输出参数的存储过程 242
11.1.5  带输入输出参数的存储过程 245
11.1.6  维护存储过程 246
11.2  函数 246
11.2.1  函数概述 246
11.2.2  调用函数 247
11.2.3  函数返回类型 248
11.2.4  维护函数 251
11.3  包 251
11.3.1  包概述 252
11.3.2  调用包 253
11.3.3  使用集合类型 256
11.3.4  重载 257
11.3.5  构造过程 258
11.3.6  维护包 259
小结 259
练习 260
第12章  序列和触发器 262
12.1  序列 264
12.1.1  序列概述 264
12.1.2  使用序列 264
12.1.3  维护序列 265
12.2  触发器 266
12.2.1  语句触发器 267
12.2.2  行触发器 268
12.2.3  维护触发器 273
小结 274
练习 275
第13章  事务与数据恢复 277
13.1  事务的概念 279
13.1.1  事务概述 279
13.1.2  事务的状态 279
13.1.3  事务的特性与应用系统 280
13.2  事务控制 282
13.2.1  搭建事务演示环境 282
13.2.2  事务的开始与结束 284
13.2.3  事务的提交 285
13.2.4  事务的回滚与保存点 286
13.2.5  事务隔离级别 288
13.3  数据恢复 291
13.3.1  数据库恢复概述 291
13.3.2  故障种类及恢复策略 293
13.3.3  Oracle数据库的备份与恢复 295
小结 299
练习 299
第14章  并发控制 301
14.1  并发的概念 303
14.1.1  并发概述 303
14.1.2  锁、锁定和锁定协议 305
14.1.3  锁的粒度 310
14.2  锁在Oracle中的应用 311
14.2.1  Oracle中锁的分类 311
14.2.2  Oracle中锁的级别 314
14.2.3  Oracle中的锁争用的检测与解决 316
小结 321
练习 321
第15章  数据库安全 323
15.1  安全性概述 325
15.1.1  计算机安全性概述 325
15.1.2   数据库安全性控制 327
15.2  Oracle中的权限管理 330
15.2.1  Oracle权限分类 330
15.2.2  Oracle系统权限与对象权限分类 332
15.3  Oracle中的角色管理 334
15.3.1  角色概述 334
15.3.2  Oracle中角色概述 335
15.3.3  Oracle中角色管理与使用 336
15.4  Oracle中的用户管理 339
15.4.1  数据库系统用户概述 339
15.4.2  Oracle中用户概述 340
15.4.3  Oracle中用户管理与使用 341
小结 343
练习 344
实践篇 345
实践1  Oracle 10g数据库系统 346
实践指导 346
实践1.G. 1 346
实践1.G. 2 350
知识拓展 355
1. 数据库配置助手（DBCA） 355
2. 卸载Oracle 10g数据库 359
拓展练习 361
练习1.E.1 361
练习1.E.2 361
练习1.E.3 361
实践2  关系数据库理论 362
实践指导 362
实践2.G..1 362
实践2.G..2 364
知识拓展 365
1. 创建user和schema 365
2.  SQL*Plus 368
拓展练习 370
练习2.E.1 370
练习2.E.2 370
实践3  表 371
实践指导 371
实践3.G. 1 371
实践3.G..2 373
实践3.G. 3 375
知识拓展 376
1. 同义词 376
2. 表信息 378
3. 索引信息 381
4. 约束信息 382
拓展练习 382
练习3.E.1 382
练习3.E.2 382
练习3.E.3 382
实践4  数据维护 383
实践指导 383
实践4.G.1 383
知识拓展 384
1. 在INSERT中使用子查询 384
2. 多表插入 385
3.  MERGE语句 387
拓展练习 388
练习4.E.1 388
实践5  视图 389
实践指导 389
实践5.G.1 389
实践5.G.2 390
知识拓展 392
1. 视图信息 392
拓展练习 394
练习5.E.1 394
练习5.E.2 394
实践6  PL/SQL基础 395
实践指导 395
实践6.G.1 395
实践6.G.2 396
知识拓展 399
1.  PL/SQL代码编写规则 399
2.  LOB类型 400
3. 集合运算 400
4. 批量 403
拓展练习 406
练习6.E.1 406
实践7  游标和异常处理 407
实践指导 407
实践7.G.1 407
实践7.G.2 408
知识拓展 411
1. 批量提取 411
2. 异常处理函数 413
拓展练习 413
练习7.E.1 413
练习7.E.2 414
实践8  PL/SQL程序单元 415
实践指导 415
实践8.G.1 415
实践8.G.2 418
知识拓展 421
1. 编译警告 421
2.  RAISE_APPLICATION_ERROR 422
3. 包的纯度级别 423
4. 系统工具包 425
拓展练习 427
练习8.E.1 427
练习8.E.2 427
实践9  序列和触发器 428
实践指导 428
实践9.G.1 428
实践9.G.2 429
知识拓展 431
1.  INSTEAD OF触发器 431
2. 系统事件触发器 432
拓展练习 435
练习9.E.1 435
练习9.E.2 435