目录 1
第一章 背景知识 1
1.1 DB2的发展历史 1
1.1.1 产品概貌 1
1.1.2 产品主件及其特征 2
1.1.3 相关产品 4
1.2 DB2的体系结构 6
1.2.1 客户/服务器连接 6
1.2.2 结点、实例和数据库 8
1.2.3 增强的功能和改进的性能 9
1.3.1 命令行处理器(CLP) 10
1.3 从客户端访问DB2系统的方法 10
1.3.2 应用程序设计 11
1.3.3 VisualAge和VisualGen 13
1.3.4 PowerBuilder 14
1.4 小结 14
第二章 SQL语言 16
2.1 数据库的连接及断开 16
2.1.1 连接数据库 16
2.1.2 断开数据库 17
2.2 数据库对象的建立和删除 17
2.2.1 基本概念 17
2.2.2 数据库、表空间、表 18
2.2.3 创建表空间 19
2.2.4 创建数据库 20
2.2.5 删除数据库 21
2.3 表和视图 21
2.3.1 表 21
2.3.1 视图 27
2.4 数据库的查询 28
2.4.1 表达式 28
2.4.2 列函数 30
2.4.3 查询条件 32
2.4.4 数据库的查询形式 35
2.4.5 嵌套查询(Nesting Query) 39
2.4.6 嵌套表表达式 40
2.4.7 共用表表达式(common_table_expression) 41
2.4.8 递归查询 42
2.4.9 多表连接(Table Join) 43
2.4.10 查询的优化调整 44
2.5 系统目录表的查询 46
2.6 改变表的结构ALTER语句 47
2.7 UPDATE语句 48
2.8 INSERY语句 50
2.9 系统特殊寄存器 51
2.10 中文处理 52
3.1.1 例程 54
3.1 DB2应用程序的基本结构 54
第三章 DB2编程基础 54
3.1.2 宿主变量的定义 55
3.1.3 SQL语句 56
3.1.4 错误处理 56
3.2 创建可执行的应用程序 56
3.2.1 创建的过程 57
3.2.2 预编译 58
3.2.3 编译连接 59
3.2.4 捆绑 60
3.2.5 包 61
3.2.6 应用、捆绑文件与包之间的关系 63
3.3 出错处理 64
3.3.1 SQLCODE和SQLSTATE 65
3.3.2 用WHENEVER处理错误 65
3.3.3 SQLCA的结构 66
3.4 事务 68
3.4.1 什么是事务 68
3.4.2 事务的分类 68
3.4.3 事务的开始 71
3.4.4 事务的结束 71
3.5 数据类型 75
3.5.1 常规数据类型 75
3.5.2 变长数据 76
3.5.3 大对象数据 77
3.5.4 自定义数据类型 79
3.5.5 数据类型比较与转换 80
3.6 DB2中几种编写应用程序的方法 81
3.6.1 静态嵌入式编程 81
3.6.2 动态SQL编程 82
3.6.3 调用层接口(CLI) 83
3.6.4 存储过程 84
3.6.5 编程方法的比较 85
3.7 并发控制 88
3.7.1 隔离级别 88
3.7.2 锁 91
3.8 小结 96
第四章 静态SQL编程 97
4.1 静态SQL的基本程序结构和处理原理 97
4.1.1 静态SQL的例程 97
4.1.2 程序的结构 100
4.1.3 静态SQL应用生成的过程及特点 105
4.2 游标在静态SQL中的应用 109
4.2.1 游标的说明 109
4.2.2 FETCH语句 111
4.2.3 读取的顺序 113
4.2.4 游标的种类 114
4.3 修改和删除操作 114
4.3.1 UPDATE和DELETE语句 115
4.3.2 复合SQL语句 117
第五章 用动态SQL编写程序 119
5.1 动态SQL概述 119
5.1.1 为什么使用动态SQL 119
5.1.2 动态SQL与静态SQL的比较 119
5.1.3 动态SQL与CLI的比较 120
5.2 嵌入式动态SQL的语句 120
5.2.1 PREPARE 121
5.2.2 DESCRIBE 121
5.2.3 EXECUTE 121
5.3.1 不带选择的动态SQL的程序结构 122
5.3 动态SQL的基本程序结构 122
5.2.4 EXECUTE IMMEDIATE 122
5.3.2 带固定参数选择的动态SQL的程序结构 123
5.3.3 带不定参数选择的动态SQL的程序结构 123
5.4 动态SQL的游标(CURSOR)的使用 124
5.4.1 动态游标声明 125
5.4.2 动态OPEN 125
5.4.3 动态FETCH 126
5.5 SQLDA的使用 126
5.5.1 SQLDA的结构与声明 126
5.5.2 SQLDA的描述与准备 130
5.5.3 在OPEN,FETCH,EXECUTE或CALL语句中使用SQLDA 131
5.6.1 判断SQL执行有无错误 134
5.6 例子 134
5.6.2 游标处理的例子 135
5.6.3 SQLDA使用的例子 136
5.6.4 使用参数标示的例子 141
第六章 调用层接口(CALL LEVEL INTERFACE) 143
6.1 DB2 CLI的背景和特点 143
6.1.1 DB2 CLI的来源 143
6.1.2 DB2 CLI和ODBC 143
6.1.3 DB2 CLI的特点 143
6.2 DB2 CLI程序的结构 144
6.2.1 句柄和DB2 CLI程序的基本结构 144
6.2.2 初始化和结束阶段 145
6.2.3 事务处理阶段 148
6.2.4 程序实例 154
6.2.5 CLI应用程序的创建 161
6.3 数据类型和类型转换 163
6.4 DB2 CLI高级编程方法 164
6.4.1 分布式事务工作单元 164
6.4.2 系统catalog信息 165
6.4.3 长数据的分片传送与查询 166
6.4.4 用数组输入参数 166
6.4.5 将查询结果输入数组 168
6.4.6 使用复合SQL 169
6.4.7 大对象数据的处理 170
6.4.8 CLI与其它编程方法 172
6.5 小结 176
第七章 存储过程 177
7.1 存储过程简介 177
7.1.1 存储过程应用的总体结构 177
7.1.2 存储过程应用的特点 177
7.1.3 激发存储过程 178
7.1.4 存储过程的执行 178
7.2 存储过程的程序结构及执行原理 178
7.2.4 几点考虑 179
7.2.3 应用的创建 179
7.2.2 服务器端的应用 179
7.2.1 CLIENT端的应用 179
7.2.5 返回结果 180
7.3 用嵌入式的SQL开发存储过程 180
7.3.1 服务器端的例程与结构 180
7.3.2 客户端的例程与结构 183
7.3.3 SQLDA的使用 186
7.4 用CLI开发存储过程 186
7.4.1 例程与结构 186
7.4.2 返回值 189
7.4.3 应用的激发 190
7.5 小结 190
8.1.1 UDF概述 192
第八章 用户自定义函数(UDF) 192
8.1 UDF的结构和特点 192
8.1.2 UDF中的一些概念和UDF的实现 193
8.1.3 注册UDF 194
8.1.4 删除和注释UDF 200
8.2 UDF编程 201
8.2.1 UDF与数据库的接口 201
8.2.2 UDF编程实例 205
8.2.3 安装外部函数 207
8.3 小结 208
9.1 关于ODBC 209
9.1.1 ODBC综述 209
第九章 ODBC及其应用 209
9.1.2 ODBC结构 210
9.1.3 ODBC有关细节 213
9.1.4 DB2 ODBC 216
9.2 与Power-Builder的连接 218
9.2.1 Power Builder简介 219
9.2.2 Power Builder与ODBC数据库的连接 219
9.2.3 Power Script语言的事务管理语句 222
9.2.4 SQL语句的生成渠道 222
9.2.5 数据窗口 223
9.3 小结 224
附录 225