第1章 获得帮助文件及安装文件 1
1.1 获得数据库软件安装文件 1
1.1.1 获得Oracle数据库软件 1
1.1.2 获得SQL Server数据库软件 1
1.2 Oracle的帮助文件 2
1.2.1 获得帮助文件 2
1.2.2 几个常用文档介绍 3
1.2.3 查询Oracle的错误信息 3
1.3 SQL Server的帮助文件 4
1.4 创建本书测试数据 6
1.4.1 在Oracle数据库中添加测试数据 6
1.4.2 在SQL Server数据库中添加测试数据 6
第2章 客户端工具 8
2.1 客户端工具介绍 8
2.1.1 Oracle的客户端工具 8
2.1.2 SQL Server的客户端工具 8
2.2 启动数据库服务 8
2.2.1 启动Oracle数据库服务 8
2.2.2 启动SQL Server数据库服务 9
2.3 字符界面客户端管理工具 10
2.3.1 启动客户端工具 10
2.3.2 切换数据库 12
2.3.3 查看当前连接的数据库名称 12
2.3.4 执行SQL命令 13
2.3.5 设置客户端界面每行容纳的字符数 14
2.3.6 修改执行过的SQL命令以重新执行 14
2.3.7 执行SQL脚本文件 15
2.3.8 查询结果保存为文件 16
2.3.9 切换连接用户 17
2.3.10 设置查询结果的列宽 18
2.3.11 查询表的结构,describe命令 19
2.4 图形界面工具 20
2.4.1 Oracle的图形工具 20
2.4.2 SQL Server的Management Studio 24
第3章 SQL语言 26
3.1 select语句 26
3.1.1 简单查询 26
3.1.2 多表连接 27
3.1.3 子查询 30
3.1.4 查询排序后的前n行或第n行记录 31
3.1.5 集合运算 35
3.2 insert语句 36
3.3 update语句 37
3.4 delete语句 37
3.5 null值的处理 37
3.5.1 null值在排序(order by)中的处理 37
3.5.2 null处理函数 38
3.6 修改表结构 38
3.6.1 修改列的数据类型 38
3.6.2 添加及删除列 39
3.6.3 修改列名 39
3.6.4 修改表名 40
3.7 通过复制表创建新表 40
3.7.1 Oracle的情形 40
3.7.2 SQL Server的情形 41
3.8 关于约束 41
3.9 Oracle中的drop table与回收站 42
第4章 字符串、数值及其常用函数 44
4.1 字符串与数值数据类型 44
4.1.1 字符串数据类型 44
4.1.2 数值数据类型 45
4.1.3 大对象类型(LOB类型) 49
4.1.4 在SQL Server中查询数据类型对应关系 49
4.2 常用字符串及数值处理函数 49
4.2.1 常用字符串处理函数 49
4.2.2 常用数值处理函数列表 54
4.3 字符串及数值类型转换函数 54
4.3.1 在Oracle中把数值转换为字符串 55
4.3.2 在SQL Server中把数值转换为字符串 56
4.3.3 在Oracle中把字符串转换为数值 57
4.3.4 在SQL Server中把字符串转换为数值 58
第5章 日期时间型数据的处理 60
5.1 主要日期时间数据类型 60
5.1.1 Oracle中的日期时间类型 60
5.1.2 SQL Server中的日期时间类型 60
5.2 处理日期时间常量 61
5.2.1 Oracle的情形 61
5.2.2 SQL Server的情形 64
5.3 指定日期时间数据输出的格式 66
5.3.1 Oracle中的to_char()函数 66
5.3.2 SQL Server中的convert()函数 68
5.3.3 Oracle与SQL Server日期时间格式码对比 68
5.4 获得当前日期时间 68
5.4.1 Oracle中的sysdate、localtimestamp(p) 68
5.4.2 SQL Server中的getdate()、current_timestamp、sysdatetime() 69
5.5 抽取日期时间的指定部分 69
5.5.1 Oracle中的extract()函数 70
5.5.2 SQL Server中的datepart()函数 70
5.6 获取日期和时间差 71
5.6.1 Oracle中的enddate—startdate 71
5.6.2 SQL Server中的datediff()函数 72
第6章 逻辑存储结构 74
6.1 表空间与文件组的功能分类 74
6.1.1 分类与功能对比 74
6.1.2 表空间与文件组对应关系的一个总结 74
6.2 默认表空间与默认文件组 75
6.2.1 Oracle数据库的默认表空间 75
6.2.2 SQL Server数据库的默认文件组 75
6.3 数据文件 75
6.3.1 为什么大型数据库一般使用多个文件存储数据 75
6.3.2 Oracle的数据文件 75
6.3.3 SQL Server的数据文件 76
6.4 空间分配单位:extent 76
6.4.1 Oracle的extent 76
6.4.2 SQL Server的extent 76
6.5 最小存储单位:data block与data page 77
6.5.1 Oracle的data block 77
6.5.2 SQL Server的data page 77
6.6 Oracle数据库中的segment 77
6.7 表空间及文件组管理 78
6.7.1 管理Oracle表空间 78
6.7.2 管理SQL Server文件组 80
6.8 数据文件管理 82
6.8.1 管理Oracle数据文件 82
6.8.2 管理SQL Server数据文件 84
6.9 查询表空间或文件组信息 86
6.9.1 查询Oracle表空间信息 86
6.9.2 查询SQL Server文件组信息 86
6.10 查询数据文件信息 86
6.10.1 查询Oracle数据文件信息 86
6.10.2 查询SQL Server数据文件信息 87
6.11 查询指定表被分配的extent信息 88
6.11.1 在Oracle中查询表的extent信息 88
6.11.2 在SQL Server中查询表的extent信息 89
6.12 创建数据库 90
6.12.1 Oracle使用dbca建库 90
6.12.2 SQL Server使用SQL命令建库 93
第7章 数据库体系结构 97
7.1 服务器结构 97
7.1.1 Oracle的服务器结构 97
7.1.2 SQL Server的服务器结构 97
7.2 数据库相关文件 97
7.2.1 Oracle的情形 97
7.2.2 SQL Server的情形 98
7.3 内存结构 99
7.3.1 Oracle的内存结构 99
7.3.2 SQL Server的内存结构 102
7.4 主要进程(线程) 104
7.4.1 Oracle的主要进程 104
7.4.2 SQL Server的lazy writer与checkpoint线程 104
7.5 SQL Server的系统数据库 105
7.6 客户端连接的处理模式 106
7.6.1 Oracle的处理模式 106
7.6.2 SQL Server的处理模式 106
第8章 存储空间的分配与回收 107
8.1 给数据对象分配空间 107
8.1.1 Oracle分配存储空间的方式 107
8.1.2 SQL Server分配存储空间的方式 107
8.2 多个数据文件组成的表空间与文件组 108
8.2.1 Oracle表数据在多个数据文件上的分布 108
8.2.2 SQL Server表数据在多个数据文件上的分布 111
8.3 delete及truncate操作对表占用存储空间的影响 112
8.3.1 在Oracle数据库中验证delete及truncate操作对存储空间的影响 112
8.3.2 在SQL Server数据库中验证delete及truncate操作对存储空间的影响 114
第9章 重做日志文件及其管理 117
9.1 重做日志文件的组织 117
9.1.1 Oracle的情形 117
9.1.2 SQL Server的情形 118
9.2 查看日志文件信息 119
9.2.1 Oracle的情形 119
9.2.2 SQL Server的情形 120
9.3 数据库运行模式 122
9.3.1 Oracle数据库的归档模式设置 122
9.3.2 SQL Server数据库的完整、简单及大容量日志恢复模式 124
9.3.3 验证SQL Server的不同数据库属性对重做文件使用的影响 126
9.3.4 Oracle对大容量操作的处理方式 132
9.4 管理日志文件 140
9.4.1 Oracle的情形 140
9.4.2 SQL Server的情形 142
第10章 配置服务器与数据库 145
10.1 配置Oracle数据库服务器 145
10.1.1 初始化参数文件 145
10.1.2 显示初始化参数值 145
10.1.3 查询是否使用spfile 146
10.1.4 修改初始化参数值 147
10.2 配置SQL Server服务器与数据库 147
10.2.1 配置服务器 147
10.2.2 配置数据库 149
第11章 用户及权限管理 152
11.1 Oracle的用户及权限管理 152
11.1.1 用户管理 152
11.1.2 权限管理 155
11.2 SQL Server中的用户及权限管理 161
11.2.1 有关用户及权限的几个概念 161
11.2.2 服务器登录账号管理 165
11.2.3 数据库用户管理 168
11.2.4 权限概述 169
11.2.5 服务器层次的权限管理 172
11.2.6 数据库层次的权限管理 174
11.2.7 架构层次的权限管理 175
11.2.8 对象权限 176
11.2.9 查询数据库用户具备的权限信息 177
11.2.10 几个易混淆的问题 178
第12章 索引 183
12.1 Oracle提供的索引 183
12.1.1 B-Tree索引 183
12.1.2 索引组织表 184
12.1.3 位图索引 185
12.2 SQL Server提供的索引 186
第13章 执行计划 187
13.1 SQL命令的执行过程 187
13.2 执行计划的概念 187
13.3 使用文本方式查看执行计划 188
13.3.1 在Oracle中查看执行计划 188
13.3.2 在SQL Server中查看执行计划 192
13.4 查看SQL命令的执行时间 194
13.4.1 在Oracle中查看执行时间 194
13.4.2 在SQL Server中查看执行时间 194
13.5 使用图形方式查看执行计划 195
13.5.1 Oracle的情形 195
13.5.2 SQL Server的情形 196
第14章 分区 199
14.1 Oracle中的分区 199
14.1.1 分区类型 199
14.1.2 范围分区 200
14.1.3 散列分区 204
14.1.4 列表分区 207
14.2 SQL Server中的分区 209
14.2.1 分区类型 209
14.2.2 使用分区的主要步骤 209
14.2.3 创建存放分区的文件组 210
14.2.4 对文件组添加数据文件 210
14.2.5 创建分区函数 211
14.2.6 创建分区scheme 212
14.2.7 创建分区表 212
14.2.8 查询记录所在分区 213
14.2.9 添加新的分区 213
14.2.10 删除分区 214
14.2.11 在表之间移动分区数据 215
14.2.12 删除分区函数与分区scheme 216
第15章 事务处理 217
15.1 事务概念 217
15.2 事务的ACID属性 217
15.3 事务控制命令 217
15.4 commit背后 218
15.5 rollback背后 218
15.6 客户端的事务模式 219
15.6.1 自动提交事务模式 219
15.6.2 隐式事务模式 219
15.6.3 显式事务模式 219
15.6.4 设置事务模式 220
15.7 DDL语句对事务的影响 220
15.7.1 Oracle的DDL及DCL语句与事务的关系 220
15.7.2 SQL Server的DDL及DCL语句与事务的关系 222
15.8 事务隔离级别 224
15.8.1 SQL标准中的事务隔离级别 224
15.8.2 read committed隔离级别 225
15.8.3 serializable隔离级别 227
15.9 使SQL Server达到Oracle隔离级别效果 229
15.9.1 设置read_committed_snapshot改变read committed效果 229
15.9.2 设置allow_snapshot_isolation改变serializable效果 230
第16章 锁 232
16.1 锁的种类 232
16.1.1 Oracle中锁的种类 232
16.1.2 SQL Server中锁的种类 234
16.2 SQL Server锁的进一步讨论 239
16.2.1 锁的升级 239
16.2.2 事务隔离级别与锁的关系 240
第17章 程序设计 246
17.1 注释方式 246
17.2 程序基本结构 246
17.3 信息输出:Hello,world! 247
17.3.1 PL/SQL使用dbms_output.put_line() 247
17.3.2 T-SQL使用print或select 248
17.4 变量定义与赋值 248
17.4.1 PL/SQL的变量定义及赋值 248
17.4.2 T-SQL的变量定义及赋值 249
17.5 条件处理 251
17.5.1 PL/SQL中的条件处理 251
17.5.2 T-SQL中的条件处理 252
17.5.3 case语句 253
17.6 循环 255
17.6.1 PL/SQL中的循环 255
17.6.2 T-SQL中的循环 257
17.6.3 break与continue 258
17.7 异常处理 260
17.7.1 PL/SQL的exception...when 260
17.7.2 T-SQL的try...catch 263
第18章 存储过程与函数 268
18.1 创建与执行存储过程 268
18.1.1 Oracle的存储过程 268
18.1.2 SQL Server的存储过程 270
18.2 函数 273
18.2.1 Oracle的函数 273
18.2.2 SQL Server的函数 273
18.3 查询存储过程及函数的定义文本 274
18.3.1 Oracle的情形 274
18.3.2 SQL Server的情形 275
第19章 触发器 276
19.1 什么是触发器 276
19.2 触发器可以引用的两种临时结构 276
19.2.1 Oracle的new及old结构 276
19.2.2 SQL Server的inserted及deleted临时表 276
19.3 Oracle中的触发器 277
19.3.1 Oracle中的触发器类型 277
19.3.2 DDL触发器 277
19.3.3 DML触发器 280
19.3.4 系统触发器 282
19.4 SQL Server中的触发器 283
19.4.1 SQL Server中的触发器类型 283
19.4.2 DDL触发器 284
19.4.3 DML触发器 285
19.5 管理触发器 288
19.5.1 查询触发器定义 288
19.5.2 删除触发器 290
19.5.3 修改触发器定义 290
第20章 数据字典及系统信息查询 291
20.1 数据字典视图分类 291
20.1.1 Oracle的数据字典视图分类 291
20.1.2 SQL Server的数据字典视图分类 291
20.2 查询所有数据字典视图 292
20.2.1 查询Oracle的所有数据字典视图 292
20.2.2 查询SQL Server的所有系统视图 293
20.3 Oracle与SQL Server常用数据字典视图的对应关系 293
20.4 常用系统信息查询 296
20.4.1 查询产品版本 296
20.4.2 查询配置参数 297
20.4.3 查询内存使用情况 300
20.4.4 获取当前系统时间 303
20.4.5 查看当前用户 305
20.4.6 查看表的结构 305
20.4.7 查看存储过程、触发器的定义 306
第21章 备份恢复 307
21.1 备份工具 307
21.2 备份种类 307
21.2.1 Oracle的备份种类 307
21.2.2 SQL Server的备份种类 307
21.2.3 Oracle与SQL Server对应的备份种类比较 308
21.3 restore与recover命令的含义 308
21.3.1 Oracle中的restore与recover命令 308
21.3.2 SQL Server中的restore与recover命令 309
21.4 备份恢复语法 309
21.4.1 全库备份语法 309
21.4.2 文件及表空间(文件组)备份 310
21.4.3 差异备份语法 311
21.4.4 SQL Server的事务日志备份 313
21.5 数据恢复语法 313
21.5.1 rman中的恢复语法 313
21.5.2 SQL Server中的恢复语法 314
21.6 备份恢复实践 314
21.6.1 Oracle全库备份及恢复的完整过程 314
21.6.2 SQL Server全库备份及恢复的完整过程 319
第22章 导入导出数据 322
22.1 Oracle的expdp/impdp与SQL Server的bcp 322
22.1.1 Oracle的expdp/impdp 322
22.1.2 SQL Server的bcp 325
22.2 Oracle的SQL*Loader工具与SQL Server的bulk insert命令 328
22.2.1 Oracle的SQL*Loader工具 328
22.2.2 SQL Server的bulk insert命令 330
22.3 SQL Server的导入导出向导(SSIS) 331
第23章 闪回数据库 335
23.1 闪回原理 335
23.1.1 Oracle的情形 335
23.1.2 SQL Server的情形 335
23.2 基本配置 335
23.2.1 Oracle的情形 335
23.2.2 SQL Server的情形 336
23.3 对数据库执行闪回操作 337
23.3.1 Oracle的情形 337
23.3.2 SQL Server的情形 338
23.4 Oracle数据库的其他闪回功能 339
23.4.1 闪回查询 339
23.4.2 flashback table 340
23.4.3 闪回删除的表 341
参考文献 343