21天学通Oracle(第3版)
2014-1
电子工业出版社
张朝明
Oracle是目前全球应用最广泛、功能最强大的关系型数据库。《21天学通Oracle(第3版)》结合大量实例,详细讲述了Oracle 12c数据库各方面的知识。全书内容包括Oracle安装配置、Oracle常用工具、SQL Plus和PL/SQL、Oracle数据库、Oracle数据表对象、约束、视图、函数与存储过程、游标、触发器、序列、用户角色与权限控制、Oracle中的控制语句、SQL查询、SQL更新数据、数据库速度优化与数据完整性、数据一致性与事务管理、并发控制、Oracle中的正则表达式、Oracle在Java开发中的应用、Oracle在C#开发中的应用、常见面试习题。为了便于读者学习与掌握,在每章都使用了单独的小节来展示实例,并给出习题和答案。同时,《21天学通Oracle(第3版)》最后配以面试常见问题,帮助读者更好地应对企业面试。
《21天学通Oracle(第3版)》光盘附带书中所涉及的源文件数据库脚本和配套的全程视频,以便读者更好地掌握本书内容。
《21天学通Oracle(第3版)》适合Oracle数据库开发人员、基于Oracle数据库的软件程序员、Oracle数据库管理员、大专院校学生,以及对Oracle开发有兴趣的人员。《21天学通Oracle(第3版)》浅显易懂、实例丰富,尤其适合广大程序员自学。
第一篇 Oracle管理配置
第1章 Oracle安装配置
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 安装过程 4
1.2.3 安装中需要注意的问题 9
1.3 本章小结 9
1.4 习题 9
第2章 Oracle常用工具
2.1 Net Configuration Assistant(网络配置助手) 10
2.1.1 监听程序配置 10
2.1.2 命名方法配置 13
2.1.3 本地网络服务名配置 15
2.2 Net Manager(网络管理员) 17
2.3 本章实例 19
2.4 本章小结 21
2.5 习题 21
第3章 SQL Plus和PL/SQL
3.1 SQL Plus与PL/SQL简介 22
3.2 使用SQL Plus 23
3.2.1 登录SQL Plus 23
3.2.2 SQL Plus输出结果的格式化 24
3.2.3 SQL Plus小结 29
3.3 PL/SQL 29
3.3.1 PL/SQL常用开发工具 29
3.3.2 开发一个简单的PL/SQL程序 30
3.4 本章实例 31
3.5 本章小结 32
3.6 习题 32
第二篇 Oracle数据库对象
第4章 Oracle数据库
4.1 创建Oracle数据库 33
4.2 Oracle数据库的相关术语 35
4.2.1 数据库 35
4.2.2 数据库实例和SID 36
4.2.3 ORACLE_SID 37
4.3 Oracle数据库的备份与恢复 37
4.3.1 逻辑备份/恢复(导出/导入) 37
4.3.2 物理备份/恢复 38
4.3.3 利用SQL Developer备份数据库 39
4.4 本章实例 41
4.5 本章小结 41
4.6 习题 42
第5章 Oracle数据表对象
5.1 Oracle表空间 43
5.1.1 Oracle表空间简介 43
5.1.2 创建Oracle表空间 44
5.1.3 查看表空间 47
5.1.4 修改数据库默认表空间 47
5.1.5 修改表空间名称 48
5.1.6 删除表空间 49
5.2 创建Oracle数据表 50
5.2.1 利用工具创建数据表 50
5.2.2 利用工具查看数据表 51
5.2.3 利用命令创建数据表 52
5.2.4 利用命令查看表结构 52
5.3 修改Oracle数据表结构 53
5.3.1 利用工具修改数据表结构 53
5.3.2 利用命令修改数据表结构 54
5.4 删除数据表 56
5.4.1 利用工具删除数据表 56
5.4.2 利用SQL语句删除数据表 56
5.5 备份/恢复数据表 57
5.5.1 利用工具备份/恢复数据表 57
5.5.2 利用命令备份/恢复数据表 60
5.6 临时表 61
5.6.1 临时表简介 61
5.6.2 会话级临时表 61
5.6.3 事务级临时表 62
5.6.4 查看临时表在数据库中的信息 63
5.6.5 临时表的应用场景 64
5.7 特殊的表dual 64
5.7.1 分析dual表 65
5.7.2 dual表的应用场景 65
5.7.3 修改dual表对查询结果的影响 66
5.8 本章实例 66
5.9 本章小结 67
5.10 习题 67
第6章 约束
6.1 主键约束 68
6.1.1 主键简介 68
6.1.2 创建主键约束 69
6.1.3 修改表的主键约束 71
6.1.4 主键应用场景 73
6.2 外键约束 74
6.2.1 外键简介 74
6.2.2 创建外键约束 74
6.2.3 级联更新与级联删除 77
6.2.4 修改外键属性 79
6.2.5 外键使用 81
6.3 唯一性约束 82
6.3.1 唯一性约束简介 82
6.3.2 创建唯一性约束 82
6.3.3 修改唯一性约束 83
6.3.4 唯一性约束的使用 84
6.4 检查约束 85
6.4.1 检查约束简介 85
6.4.2 创建检查约束 85
6.4.3 修改检查约束 87
6.4.4 检查约束的使用 88
6.5 默认值约束 88
6.5.1 默认值约束简介 88
6.5.2 创建默认值约束 88
6.5.3 修改默认值约束 90
6.6 本章实例 91
6.7 本章小结 92
6.8 习题 92
第7章 视图
7.1 关系视图 93
7.1.1 建立关系视图 93
7.1.2 修改/删除视图 94
7.1.3 连接视图 96
7.1.4 编译视图 98
7.1.5 使用force选项强制创建视图 100
7.1.6 利用视图更新数据表 101
7.1.7 with check option选项 103
7.1.8 关系视图小结 104
7.2 内嵌视图 104
7.2.1 内嵌视图简介 105
7.2.2 内嵌视图的使用 105
7.2.3 内嵌视图小结 107
7.3 对象视图 107
7.3.1 对象视图简介 107
7.3.2 对象视图的创建与使用 107
7.4 物化视图 109
7.4.1 物化视图简介 109
7.4.2 物化视图的使用 109
7.4.3 物化视图的数据加载 111
7.4.4 物化视图的数据更新 111
7.4.5 查询重写 112
7.5 本章实例 113
7.6 本章小结 113
7.7 习题 113
第8章 函数与存储过程
8.1 函数 114
8.1.1 函数简介 114
8.1.2 创建函数 114
8.1.3 函数中的括号 116
8.1.4 函数的参数 117
8.1.5 函数的确定性 118
8.1.6 典型函数举例 119
8.2 存储过程 120
8.2.1 存储过程简介 120
8.2.2 创建存储过程 120
8.2.3 存储过程的参数——IN参数 122
8.2.4 存储过程的参数——OUT参数 123
8.2.5 存储过程的参数——IN OUT参数 125
8.2.6 存储过程的参数——参数顺序 125
8.2.7 存储过程的参数——参数的默认值 128
8.2.8 存储过程的参数——参数顺序总结 129
8.3 程序包 129
8.3.1 规范 129
8.3.2 主体 131
8.3.3 调用程序包中的函数/存储过程 133
8.3.4 程序包中的变量 134
8.4 本章实例 135
8.5 本章小结 137
8.6 习题 137
第9章 游标
9.1 游标简介 138
9.2 显式游标 138
9.2.1 声明游标 138
9.2.2 使用游标 140
9.3 隐式游标 142
9.3.1 sql隐式游标 143
9.3.2 cursor for游标 144
9.3.3 隐式游标和显式游标 145
9.4 游标属性 145
9.5 动态游标 147
9.5.1 强类型动态游标 147
9.5.2 弱类型动态游标 149
9.5.3 比较两种动态游标 152
9.6 本章实例 152
9.7 本章小结 153
9.8 习题 153
第10章 触发器
10.1 触发器简介 154
10.2 创建和使用触发器 154
10.2.1 创建触发器 155
10.2.2 触发器的作用级别 156
10.2.3 在多个事件上定义触发器 157
10.2.4 为同一事件定义多个触发器 158
10.2.5 触发器限制 159
10.3 语句触发器 160
10.3.1 创建语句触发器 160
10.3.2 触发器谓词 162
10.3.3 触发时机 164
10.3.4 触发器级联 164
10.4 行触发器 165
10.4.1 行触发器与引用 166
10.4.2 触发时机与引用 168
10.4.3 触发时机与瞬态 169
10.5 instead of触发器 171
10.5.1 创建和使用instead of触发器 171
10.5.2 instead of触发器与引用 174
10.6 系统事件与用户事件触发器 175
10.6.1 系统事件触发器 175
10.6.2 用户事件触发器 176
10.7 启用和禁用触发器 178
10.7.1 启用和禁用触发器的场景 178
10.7.2 禁用触发器 178
10.7.3 启用触发器 179
10.7.4 触发器信息 180
10.8 本章实例 180
10.9 本章小结 182
10.11 习题 182
第11章 序列
11.1 创建和使用序列 183
11.1.1 创建序列 183
11.1.2 使用序列 184
11.1.3 序列初始值start with 185
11.2 修改序列属性 186
11.2.1 修改minvalue和maxvalue 186
11.2.2 修改increment by 187
11.2.3 修改cycle 188
11.2.4 修改cache 189
11.3 本章实例 190
11.4 本章小结 191
11.5 习题 191
第12章 用户角色与权限控制
12.1 用户 192
12.1.1 Oracle中的用户 192
12.1.2 创建新用户 193
12.1.3 用户与模式(Schema) 194
12.1.4 系统用户sys和system 194
12.2 权限 195
12.2.1 系统权限 195
12.2.2 对象权限 197
12.3 角色 201
12.3.1 创建和使用角色 201
12.3.2 继承角色 203
12.3.3 禁用和启用角色 204
12.4 本章实例 205
12.5 本章小结 206
12.6 习题 206
第三篇 Oracle中的SQL
第13章 Oracle数据类型
13.1 Oracle中的数据类型 207
13.1.1 字符型 207
13.1.2 数值型 208
13.1.3 日期时间型 208
13.1.4 lob类型 209
13.2 Oracle中的特殊数据 209
13.2.1 rowid 209
13.2.2 null与空字符串 210
13.2.3 单引号与双引号 211
13.3 本章实例 213
13.4 本章小结 215
13.5 习题 215
第14章 Oracle中的函数与表达式
14.1 Oracle中的字符串函数 216
14.1.1 lpad()函数 216
14.1.2 rpad()函数 217
14.1.3 lower()函数——返回小写字符串 217
14.1.4 upper()函数——返回大写字符串 217
14.1.5 initcap ()函数——单词首字母大写 218
14.1.6 length()函数——返回字符串长度 218
14.1.7 substr()函数——截取字符串 219
14.1.8 instr()函数——获得字符串出现的位置 219
14.1.9 ltrim()函数——删除字符串首部空格 220
14.1.10 rtrim()函数——删除字符串尾部空格 220
14.1.11 trim()函数——删除字符串首尾空格 220
14.1.12 to_char()函数——将其他类型转换为字符类型 221
14.1.13 chr()函数——将ASCII码转换为字符串 223
14.1.14 translate()函数——替换字符 223
14.2 Oracle中的数学函数 224
14.2.1 abs ()函数——返回数字的绝对值 224
14.2.2 round ()函数——返回数字的“四舍五入”值 224
14.2.3 ceil()函数——向上取整 225
14.2.4 floor()函数——向下取整 225
14.2.5 mod ()函数——取模操作 226
14.2.6 sign()函数——返回数字的正负性 226
14.2.7 sqrt()函数——返回数字的平方根 226
14.2.8 power()函数——乘方运算 227
14.2.9 trunc()函数——截取数字 227
14.2.10 vsize()函数——返回数据的存储空间 227
14.2.11 to_number()函数——将字符串转换为数值类型 228
14.3 Oracle中的日期函数 228
14.3.1 to_date()函数——将字符串转换为日期型 228
14.3.2 add_months()函数——为日期加上特定月份 229
14.3.3 last_day()函数——返回特定日期所在月的最后一天 230
14.3.4 months_between ()函数——返回两个日期所差的月数 230
14.3.5 current_date()函数——返回当前会话时区的当前日期 230
14.3.6 current_timestamp()函数——返回当前会话时区的 当前时间戳 231
14.3.7 extract()函数——返回日期的某个域 231
14.4 Oracle中的聚合函数 232
14.4.1 max()函数——求最大值 233
14.4.2 min()函数——求最小值 233
14.4.3 avg()函数——求平均值 234
14.4.4 sum()函数——求和 234
14.4.5 count()函数——获得记录数 235
14.5 Oracle中的其他函数 236
14.5.1 decode()函数——多值判断 236
14.5.2 nvl()函数——处理空值 237
14.5.3 cast()函数——强制转换数据类型 238
14.6 Oracle中的运算表达式 239
14.6.1 数学运算 240
14.6.2 逻辑运算 241
14.6.3 位运算 242
14.7 Oracle中的特殊判式 242
14.7.1 between——范围测试 243
14.7.2 in——集合成员测试 244
14.7.3 like——模式匹配 244
14.7.4 is null——空值判断 244
14.7.5 exists——存在性判断 245
14.7.6 all、some和any——数量判断 245
14.8 Oracle高级函数——分析函数与窗口函数 246
14.8.1 排名 246
14.8.2 分区窗口 248
14.8.3 窗口子句 250
14.8.4 主要的分析函数 253
14.9 本章实例 256
14.10 本章小结 257
14.11 习题 258
第15章 Oracle中的控制语句
15.1 Oracle中的条件语句 259
15.1.1 利用if else进行条件判断 259
15.1.2 利用case when进行分支判断 260
15.2 Oracle中的循环语句 262
15.2.1 无条件循环 262
15.2.2 while循环 263
15.2.3 for循环 264
15.3 本章实例 265
15.4 本章小结 265
15.5 习题 266
第16章 SQL查询
16.1 基本查询 267
16.1.1 select语句查询执行步骤 267
16.1.2 where子句 269
16.1.3 利用distinct获得唯一性记录 270
16.1.4 order by子句 270
16.1.5 group by子句 271
16.1.6 having子句 274
16.2 子查询 275
16.2.1 理解子查询 275
16.2.2 子查询使用实例 275
16.3 联合语句 277
16.3.1 union查询 277
16.3.2 union all查询 278
16.3.3 intersect查询 280
16.3.4 minus查询 280
16.4 连接 281
16.4.1 自然连接 281
16.4.2 内连接 282
16.4.3 外连接——左连接 283
16.4.4 外连接——右连接 285
16.4.5 外连接——完全连接 287
16.5 层次化查询 289
16.5.1 利用connect by进行层次化查询 290
16.5.2 connect by的使用场景 291
16.5.3 sys_connect_by_path()函数的使用 292
16.6 本章实例 293
16.7 本章小结 295
16.8 习题 295
第17章 SQL更新数据
17.1 插入数据 296
17.1.1 insert语句向表中插入数据 296
17.1.2 利用子查询批量插入数据 297
17.1.3 insert语句与默认值 298
17.1.4 insert语句与唯一性约束 298
17.1.5 insert语句与外键约束 298
17.2 修改数据 299
17.2.1 利用update修改单列的值 299
17.2.2 利用update修改多列的值 300
17.2.3 利用where子句限制修改范围 300
17.3 删除数据 301
17.3.1 利用delete命令删除数据 301
17.3.2 利用truncate命令删除数据 302
17.4 数据提交与回滚 302
17.4.1 回滚动作 302
17.4.2 提交动作 303
17.4.3 SQL Developer中的回滚与提交 304
17.5 本章实例 305
17.6 本章小结 307
17.7 习题 307
第四篇 Oracle编程高级应用
第18章 数据库速度优化与数据完整性
18.1 利用索引加快数据引用 308
18.1.1 索引的原理 308
18.1.2 利用索引提高数据库性能 309
18.1.3 索引对DML的影响 311
18.1.4 索引的使用时机 312
18.2 利用约束保持数据完整性 312
18.2.1 数据库完整性的重要性 313
18.2.2 保持数据库完整性的重要方面 313
18.2.3 利用约束保持数据完整性 313
18.3 本章实例 314
18.3.1 使用比较运算符不当 314
18.3.2 函数的使用 315
18.3.3 联合索引 315
18.4 本章小结 316
18.6 习题 316
第19章 数据一致性与事务管理
19.1 什么是数据一致性和事务 317
19.1.1 数据一致性 317
19.1.2 事务 317
19.2 Oracle中的事务处理 318
19.2.1 commit命令 318
19.2.2 rollback命令 319
19.2.3 savepoint和rollback to savepoint命令 319
19.2.4 事务的属性和隔离级别 321
19.3 事务处理原则 325
19.3.1 原子性 325
19.3.2 一致性 326
19.3.3 隔离性 328
19.3.4 持久性 329
19.4 本章实例 329
19.5 本章小结 331
19.6 习题 331
第20章 并发控制
20.1 并发与锁定 332
20.2 数据锁定 335
20.2.1 悲观锁定 335
20.2.2 乐观锁定 336
20.2.3 悲观锁定与乐观锁定的比较 338
20.2.4 锁定转换 338
20.3 并发控制的其他方法 339
20.4 本章实例 339
20.5 本章小结 343
20.6 习题 343
第21章 Oracle中的正则表达式
21.1 正则表达式简介 344
22.1.1 正则表达式与通配符 344
22.1.2 正则表达式与编程语言 344
21.2 正则表达式基础知识 345
21.2.1 元字符和普通字符 345
21.2.2 量词 345
21.2.3 字符转义与字符类 345
21.2.4 字符组的使用 346
21.2.5 正则表达式分支 346
21.2.6 Oracle中正则表达式的特殊性 346
21.3 正则表达式在Oracle中的应用 347
21.3.1 regexp_like()的使用 347
21.3.2 regexp_instr()的使用 347
21.3.3 regexp_substr()的使用 348
21.3.4 regexp_ replace ()的使用 348
21.4 本章实例 349
21.5 本章小结 349
21.6 习题 350
第五篇 Oracle与编程语言综合使用实例
第22章 Oracle在Java开发中的应用
22.1 通过JDBC使用Oracle 351
22.1.1 JDBC简介 351
22.1.2 准备工作 351
22.1.3 JDBC连接Oracle 352
22.1.4 利用JDBC查询数据 354
22.1.5 利用JDBC更新数据 355
22.1.6 总结JDBC操作数据库 357
22.2 通过Hibernate操作Oracle数据库 357
22.2.1 准备工作 357
22.2.2 配置Hibernate 358
22.2.3 利用Hibernate查询数据 361
22.2.4 利用Hibernate更新数据 362
22.2.5 利用Hibernate插入数据 364
22.3 本章小结 365
22.4 习题 365
第23章 Oracle在C#开发中的应用
23.1 在C#中连接Oracle数据库 366
23.2 在C#中操作Oracle数据库 367
23.3 在C#中使用Oracle数据库事务 369
23.4 本章小结 371
23.5 习题 372
第六篇 应试指南
第24章 常见面试习题
24.1 简历准备 373
24.2 简历投递及面试 374
24.3 常见数据库理论问题 375
24.4 常见PL/SQL相关面试问题 375
24.5 常见Oracle维护相关面试问题 377
24.6 常见Oracle应用开发相关面试问题 379