1 概论 1
1.1 关于本书 1
1.1.1 表示法 3
1.1.2 语法图 4
1.1.3 例子说明 5
1.1.4 提示 5
1.2 产品概述 5
1.2.1 客户-服务器连接 5
1.2.2 节点,实例和数据库 7
1.2.3 命令行处理器 8
1.2.4 应用程序 10
1.2.5 动态应用 12
1.2.6 存储过程 14
1.2.7 用户规则 14
1.2.8 相关产品 15
1.3 SQL简历 18
1.3.1 系统R 18
1.3.3 某些争议的决策 19
1.3.2 产品和标准 19
1.3.4 参考文献 22
2 基础 24
2.1 表 25
2.1.1 数据库举例 25
2.2 名字和库模式 27
2.3 SQL的基本数据类型 29
2.4 查询 30
2.4.1 表达式 31
2.4.3 搜索条件 34
2.4.2 Datetime算术 34
2.4.4 连接 39
2.4.5 列函数 40
2.4.6 分组 41
2.4.7 查询块 42
2.4.8 查询和直接量表 44
2.4.9 SELECT语句 47
2.4.10 VALUES语句 49
2.5.1 INSERT语句 50
2.5 数据修改 50
2.5.2 UPDATE语句 51
2.5.3 DELETE语句 53
2.6 命令行处理器(CLP)的使用 54
2.6.1 SQLCODE和SQLSTATE代码 56
2.6.2 命令行处理器的选项 56
2.6.3 注释 58
2.6.4 在你需要时去获得帮助 58
2.7.1 宿主变量 59
2.7 在应用程序中嵌入SQL 59
2.7.2 SQL说明段 61
2.7.3 双字节字符串的交换 63
2.7.4 返回码和返回信息 64
2.7.5 WHENEVER语句 66
2.7.6 游标说明 67
2.7.7 OPEN语句 69
2.7.8 FETCH语句 69
2.7.9 CLOSE语句 70
2.7.10 单行SELECT和VALUES语句 71
2.7.11 定位UPDATE和DELETE语句 73
2.7.12 用游标的命令行处理器 74
2.7.13 复合SQL语句 75
2.7.14 程序实例PARTS1:零件预定 76
2.7.15 应用程序的编译,连接和执行 80
2.7.16 重新组装软件包 82
2.7.17 在C++程序中嵌入SQL语句 83
2.8.1 CREATE TABLE语句 86
2.8 定义数据 86
2.8.2 ALTER TABLE语句 88
2.8.3 别名 88
2.8.4 视图 89
2.8.5 索引 89
2.8.6 删除对象 94
2.8.7 在对象上加注释 94
2.8.8 规范化 96
2.9.1 事务 98
2.9 数据一致性的保护 98
2.9.2 数据库连接 101
2.10 特权 106
2.10.1 实例层特权 106
2.10.2 数据库层特权 107
2.10.3 表和视图的权限 108
2.10.4 索引权限 109
2.10.5 软件包权限 109
2.10.6 GRANT和REVOKE语句 110
2.10.7 特权检查 111
2.11 本章新特点的小结 112
2.11.1 查询的增强 113
2.11.2 增强型的INSERT,UPDATE,DELETE语句 113
2.11.3 视图的增强 114
2.11.4 事务的增强 114
2.11.5 特权的增强 114
2.11.6 撤消一些限制 114
2.11.7 其它新特点 114
3.1 CAST表达式 116
3 高效查询 116
3.2 CASE表达式 118
3.2.1 简单格式 119
3.2.2 一般格式 120
3.2.3 RAISE-ERROR函数 122
3.2.4 NULLIF和COALESCE函数 123
3.3 子查询 124
3.3.1 闭包 126
3.3.2 正交性 127
3.4 纯量子查询 127
3.5 表表达式 129
3.6 公共的表表达式 130
3.7 外部连接 134
3.8 递归 137
3.8.1 计算递归 139
3.8.2 递归搜索 142
4 数据类型和函数 149
4.1 大对象 150
4.1.1 建立LOB列 151
4.1.2 在C和C++中说明大对象变量 153
4.1.3 定位器(Locator) 157
4.1.4 文件引用 161
4.1.5 LOB数据类型的限制 163
4.1.6 程序实例——SCHOLAR 164
4.2 Distinct类型 166
4.2.1 建立Distinct类型 167
4.2.2 CAST函数 169
4.2.3 Distinct类型的使用 171
4.2.4 Distinct型的赋值 172
4.3 函数路径 174
4.3.1 SET CURRENT FUNCTION PATH语句 175
4.4 用户定义函数 176
4.4.1 有源函数的建立 178
4.4.2 有源函数的例子 181
4.4.3 外部函数的建立 182
4.4.5 函数的分解 188
4.4.4 外部函数的例子 188
4,4.6 外部函数的实现 190
4.4.7 addWeeks函数实例 195
4.4.8 安装外部函数 197
4.4.9 Scratchpad函数 199
4.4.10 nthbest函数的实例 201
4.4.11 具有Distinct型外部函数的使用 205
4.4.12 函数删除 207
4.4.13 函数注释 208
4.5 走向对象的几步 209
4.5.1 多边形数据类型的例子 209
4.6 数据类型的转换 214
4.6.1 函数变元的提升 215
4.6.2 UNION语义 215
4.6.3 赋值 216
4.6.4 CAST 217
5.1 约束 218
5 主动数据 218
5.1.1 NOT NULL约束 219
5.1.2 列的缺省值 219
5.1.3 唯一索引 220
5.1.4 Check约束 221
5.1.5 主码约束 221
5.1.6 外来码约束 222
5.2 约束的建立和删除 225
5.2.1 CREATE TABLE语句 226
5.2.2 ALTER TABLE语句 229
5.3 触发器 231
5.3.1 触发器的建立和删除 234
5.3.2 赋值语句 235
5.3.3 SIGNAL语句 236
5.3.4 前触发器 237
5.3.5 后触发器 240
5.3.6 递归触发器 244
5.3.8 约束和触发器之间相互影响 247
5.3.7 约束和触发器比较 247
5.4 主动数据库的设计 249
5.5 连接和从属 261
5.5.1 保守的连接语义 262
5.5.2 从属性的类型 263
6 动态SQL 266
6.1 调用层接口 267
6.1.1 句柄 268
6.1.2 配置CLI 268
6.1.3 CLI函数的总结 269
6.1.4 类型化的参数标记 269
6.1.5 程序实例LOADER1:大批量加载程序1 273
6.1.6 程序实例QUERY1:查询界面程序1 280
6.2 嵌入式动态SQL 289
6.2.1 嵌入式动态语句 289
6.2.2 程序实例LOADER2:大批量加载程序2 293
6.2.3 SQLDA描述符 297
6.2.4 在PREPARE或DESCRIBE语句中使用的SQLDA 300
6.2.5 在OPEN,FETCH,EXECUTE或CALL语句中使用的SQLDA 303
6.2.6 程序实例QUERY2:查询界面程序2 307
7 存储过程 313
7.1 服务器端 313
7.1.1 程序实例SERVER1:银行的一个存储过程 314
7.1.2 存储过程实现规则 317
7.1.3 安装存储过程 318
7.2.1 CALL语句 320
7.2 客户端 320
7.1.4 存储过程编目表 320
7.2.2 从CLI客户调用存储过程 323
7.2.3 多个结果返回集 326
7.2.4 数据库远程应用接口 327
7.3 DATABasic的使用 327
7.3.1 DataBasic存储过程例子 328
7.3.2 客户程序的例子 330
8 任务和工具 332
8.1.1 表空间 333
8.1 创建数据库并管理空间 333
8.1.2 创建和撤消数据库 336
8.1.3 数据在哪里 338
8.2 使用数据库 338
8.2.1 操作系统级命令 339
8.2.2 找出用户自己的方法 341
8.2.3 CLP相关命令 342
8.2.4 与软件包相关命令 344
8.2.5 调用存储过程 347
8.3 管理数据库系统 348
8.3.1 选择一个实例 348
8.3.2 日常操作 349
8.3.3 编目节点和数据库 350
8.3.4 系统配置和它的数据库 353
8.3.5 迁移数据库 358
8.4 管理数据库的恢复 359
8.4.1 恢复的类型 359
8.5 大批量移动数据 365
8.4.2 恢复历史文件 365
8.5.1 文件格式 366
8.5.2 导出数据 367
8.5.3 导入数据 368
8.5.4 加载数据 370
8.5.5 检查挂起状态 373
8.6 性能调试 375
8.6.1 控制优化器 376
8.6.2 统计数字 377
8.6.3 重组表 382
8.6.4 解释一个方案 385
8.7 监视数据库 388
8.7.1 瞬态监视器 388
8.7.2 事件监视器 390
8.8 数据库导向器 393
8.8.1 可视化解释 395
8.8.2 从数据库导向器控制瞬态监视器 396
附录A 专用寄存器 398
附录B 函数 400
B.1 列函数 401
B.2 纯量函数 401
B.3 操作符 412
B.3.1 前缀操作符 412
B.3.2 中缀操作符 412
附录C 类型编码 414
附录D 系统编目表 417
D.1.2 COLCHECKS 418
D.1 SYSCAT编目视图 418
D.1.1 CHECKS 418
D.1.3 COLDIST 419
D.1.4 COLUMNS 419
D.1.5 CONSTDEP 421
D.1.6 DATATYPES 421
D.1.7 DBAUTH 422
D.1.8 EVENTMONITORS 423
D.1.10 FUNCPARMS 424
D.1.9 EVENTS 424
D.1.11 FUNCTIONS 425
D.1.12 INDEXAUTH 427
D.1.13 INDEXES 428
D.1.14 KEYCOLUSE 429
D.1.15 PACKAGEAUTH 429
D.1.16 PACKAGEDEP 430
D.1.17 PACKAGES 431
D.1.18 REFERENCES 433
D.1.20 TABAUTH 434
D.1.19 STATEMENTS 434
D.1.21 TABCONST 435
D.1.22 TABLES 436
D.1.23 TABLESPACES 438
D.1.24 TRIGDEP 439
D.1.25 TRIGGERS 440
D.1.26 VIEWDEP 441
D.1.27 VIEWS 442
D.2.2 COLUMNS 443
D.2 SYSSTAT可修改编目视图 443
D.2.1 COLDIST 443
D.2.3 FUNCTIONS 444
D.2.4 INDEXES 445
D.2.5 TABLES 445
D.3 存储过程编目表 446
D.3.1 PROCEDURES 446
附录E 在C和C++中说明宿主变量的语法 448
E.1 基本数据类型 448
E.1.1 数字宿主变量 448
E.1.2 字符串宿主变量 449
E.2 大对象数据类型 451
E.2.1 LOB宿主变量 451
E.2.2 定位器和文件引用 452
附录F IBM出版物 453
F.1 独立于平台的产品出版物资料 453
F.2 指定平台出版物 454