本书是IBM关系数据库服务器,即DB2通用数据库8.1版本的完整指南。本书分为四个部分:第一部分介绍了DB2 UDB服务器和客户端的安装和配置;第二部分介绍结构化查询语言(SQL)和数据库并发性;第三部分介绍DB2 UDB数据库管理,包括创建DB2 UDB及其相关的表空间等;第四部分介绍DB2 UDB应用程序开发。本书可用作参加DB2 UDB v8.1认证考试700和701的备考指南,也可以供DB2数据库应用开发人员参考。配套光盘包含DB2 UDB v8.1试用版、演示程序等内容。
中文版序\r\n译者序\r\n序\r\n前言\r\n\r\n第一部分 DB2 UDB入门\r\n\r\n第1章 产品概述 \r\n\r\n1.1 DB2和电子业务 \r\n1.2 DB2和 Linux \r\n1.3 DB2通用数据库 \r\n1.3.1 DB2企业服务器版 \r\n1.3.2 DB2工作组服务器版 \r\n1.3.3 DB2个人版 \r\n1.3.4 DB2 Everyplace \r\n1.4 DB2的连通性 \r\n1.4.1 DB2通用数据库客户端 \r\n1.4.2 DB2 Connect \r\n1.4.3 DB2 Replication \r\n1.4.4 DB2 Relational Connect \r\n1.4.5 IBM WebSphere Application Server \r\n1.5 DB2应用程序开发 \r\n1.5.1 DB2通用开发版 \r\n1.5.2 DB2开发中心 \r\n1.5.3 DB2关系扩展器 \r\n1.5.4 DB2数据链接管理器 \r\n1.5.5 DB2数据仓库中心 \r\n1.5.6 DB2数据仓库管理器 \r\n1.5.7 DB2 OLAP Server \r\n1.6 DB2管理 \r\n1.6.1 控制中心 \r\n1.6.2 复制中心 \r\n1.6.3 控制中心的其他工具 \r\n1.6.4 健康中心 \r\n1.6.5 其他管理工具 \r\n1.6.6 顾问程序和向导程序 \r\n1.6.7 命令行处理器 \r\n1.6.8 Visual Explain \r\n1.6.9 DB2 Query Patroller \r\n1.6.10 数据库监控器 \r\n1.6.11 DB2文件夹 \r\n1.7 小结 \r\n\r\n第2章 UDB入门 \r\n\r\n2.1 产品安装 \r\n2.1.1 Windows环境下的安装 \r\n2.1.2 使用命令行处理器 \r\n2.1.3 Linux和UNIX环境下的安装 \r\n2.1.4 分布式安装 \r\n2.2 DB2环境 \r\n2.2.1 DB2配置文件注册表 \r\n2.2.2 环境变量 \r\n2.3 DB2实例 \r\n2.4 实例管理\r\n2.4.1 本地实例管理 \r\n2.4.2 使用控制中心连接实例 \r\n2.4.3 DB2管理服务器(DAS) \r\n2.5 小结 \r\n\r\n第3章 网络连接 \r\n\r\n3.1 DB2客户端概述 \r\n3.2 建立分布式通信的途径 \r\n3.2.1 DB2 Discovery\r\n3.2.2 使用DB2 Discovery进行自动配置\r\n3.2.3 配置DB2 Discovery\r\n3.3 配置DB2客户端\r\n3.3.1 使用DB2 Discovery进行自动配置\r\n3.3.2 使用存取配置文件进行自动配置 \r\n3.3.3 使用存取配置文件 \r\n3.3.4 人工配置 \r\n3.4 人工编目DB2目录\r\n3.4.1 考察DB2目录\r\n3.4.2 连接配置的总结\r\n3.5 工具绑定\r\n3.6 小结\r\n\r\n第4章 存取控制\r\n\r\n4.1 系统安全性\r\n4.1.1 安全性简介\r\n4.1.2 验证 \r\n4.1.3 权限和特权 \r\n4.1.4 Windows NT/2000/XP下的安全注意事项 \r\n4.2 审计 \r\n4.3 小结 \r\n\r\n第二部分 使用SQL\r\n\r\n第5章 数据库对象\r\n\r\n5.1 了解数据库对象\r\n5.1.1 数据类型\r\n5.1.2 表\r\n5.1.3 模式\r\n5.1.4 表空间\r\n5.1.5 视图\r\n5.1.6 索引\r\n5.1.7 程序包\r\n5.1.8 缓冲池\r\n5.1.9 事务\r\n5.1.10 锁\r\n5.1.11 日志文件\r\n5.1.12 创建DB2数据库\r\n5.2 管理数据库对象\r\n5.2.1 使用SQL 数据定义语言\r\n5.2.2 数据类型 \r\n5.2.3 表 \r\n5.2.4 多维聚簇 \r\n5.2.5 视图 \r\n5.2.6 昵称 \r\n5.2.7 索引 \r\n5.3 数据库设计与实现\r\n5.3.1 DB2CERT数据库表的描述\r\n5.3.2 定义用户自定义数据类型\r\n5.3.3 定义列\r\n5.3.4 键\r\n5.3.5 定义主键\r\n5.3.6 定义惟一键\r\n5.3.7 定义外键 \r\n5.4 小结 \r\n\r\n第6章 操纵数据库对象\r\n\r\n6.1 数据检索\r\n6.1.1 检索整张表\r\n6.1.2 从表中投影列\r\n6.1.3 改变列的顺序\r\n6.1.4 在表中限制行\r\n6.1.5 限制结果表大小\r\n6.1.6 用户自定义类型的谓词表达式\r\n6.1.7 使用多个条件限制行\r\n6.1.8 从多个表中选择列\r\n6.1.9 使用关联名\r\n6.1.10 对输出排序\r\n6.1.11 限制排序结果\r\n6.1.12 派生列\r\n6.1.13 DB2函数\r\n6.1.14 分组值\r\n6.1.15 取消重复值\r\n6.1.16 搜索串匹配模式\r\n6.1.17 在指定范围内搜索数据\r\n6.1.18 查询空值\r\n6.1.19 否定条件查找\r\n6.1.20 查找一组值\r\n6.1.21 子查询\r\n6.1.22 量化谓词\r\n6.1.23 CASE表达式\r\n6.1.24 嵌套表表达式\r\n6.1.25 标量全选择 \r\n6.1.26 公共表表达式 \r\n6.1.27 集合运算符 \r\n6.2 修改数据\r\n6.2.1 插入数据记录\r\n6.2.2 更新行\r\n6.2.3 删除数据 \r\n6.3 视图分类 \r\n6.3.1 可删除视图\r\n6.3.2 可更新视图\r\n6.3.3 可插入视图\r\n6.3.4 只读视图\r\n6.3.5 带UNION ALL的视图\r\n6.3.6 使用带UNION ALL的表空间\r\n6.3.7 不可操作视图\r\n6.4 小结\r\n\r\n第7章 高级SQL\r\n\r\n7.1 触发器\r\n7.1.1 触发器的使用\r\n7.1.2 触发器的激活 \r\n7.1.3 Instead of 触发器 \r\n7.2 递归SQL \r\n7.3 外连接 \r\n7.3.1 左外连接\r\n7.3.2 右外连接\r\n7.3.3 全外连接\r\n7.3.4 外连接的联合\r\n7.4 联机分析处理特性\r\n7.4.1 星型模式\r\n7.4.2 OLAP索引\r\n7.4.3 星型连接\r\n7.4.4 超级分组\r\n7.4.5 移动函数\r\n7.5 高级CASE表达式\r\n7.5.1 使用CASE表达式对数值分组\r\n7.5.2 在函数中使用CASE表达式\r\n7.6 结构化类型和类型化表 \r\n7.6.1 创建结构化类型 \r\n7.6.2 修改结构化类型 \r\n7.6.3 创建类型化表 \r\n7.6.4 删除类型化表 \r\n7.6.5 在类型化表中插入行\r\n7.6.6 在类型化表中查询记录\r\n7.6.7 更新和删除类型化表中的行\r\n7.6.8 类型化表的物理实现\r\n7.6.9 引用列\r\n7.6.10 视图层次\r\n7.6.11 类型化表和类型化视图上的SQL函数\r\n7.6.12 TYPE谓词\r\n7.6.13 使用类型化表和视图的注意事项\r\n7.6.14 类型化表层次的实例\r\n7.7 汇总表\r\n7.7.1 创建汇总表\r\n7.7.2 CURRENT REFRESH AGE专用寄存器\r\n7.7.3 使用汇总表的注意事项\r\n7.7.4 汇总表的系统编目信息\r\n7.7.5 用户维护的汇总表\r\n7.7.6 物化查询表 \r\n7.8 序列 \r\n7.9 高级函数\r\n7.9.1 MULTIPLY_ALT\r\n7.9.2 SNAPSHOT表函数\r\n7.9.3 MQSeries函数\r\n7.9.4 XML函数\r\n7.10 小结\r\n\r\n第8章 并发性\r\n\r\n8.1 概述\r\n8.2 隔离级\r\n8.2.1 未提交读\r\n8.2.2 游标稳定性\r\n8.2.3 读稳定性\r\n8.2.4 可重复读\r\n8.2.5 隔离级的选择\r\n8.3 锁定\r\n8.3.1 锁属性\r\n8.3.2 锁的转换\r\n8.3.3 锁的升级\r\n8.3.4 锁等待\r\n8.3.5 锁定表语句\r\n8.3.6 ALTER TABLE语句的LOCKSIZE参数\r\n8.3.7 在SQL中修改锁定级别\r\n8.4 小结\r\n\r\n第三部分 DB2 UDB管理\r\n\r\n第9章 数据存储管理\r\n\r\n9.1 处理器、内存和磁盘资源\r\n9.1.1 处理器\r\n9.1.2 内存\r\n9.1.3 磁盘\r\n9.2 DB2存储模型\r\n9.2.1 缓冲池\r\n9.2.2 表空间\r\n9.2.3 容器\r\n9.3 表空间设计\r\n9.3.1 常规表空间\r\n9.3.2 大表空间\r\n9.3.3 系统临时表空间\r\n9.3.4 区段大小\r\n9.3.5 页的大小\r\n9.3.6 性能考虑\r\n9.3.7 长字段数据\r\n9.3.8 大对象数据\r\n9.4 实现样例\r\n9.4.1 创建数据库\r\n9.4.2 创建缓冲池\r\n9.4.3 创建表空间\r\n9.4.4 创建表\r\n9.4.5 删除表空间\r\n9.4.6 删除缓冲池\r\n9.4.7 删除数据库\r\n9.4.8 使用控制中心创建表空间\r\n9.5 表空间维护\r\n9.5.1 数据库文件\r\n9.5.2 列出表空间\r\n9.5.3 列出表空间容器\r\n9.5.4 表空间状态\r\n9.5.5 有关表空间的系统编目信息 \r\n9.5.6 向DMS表空间增加容器 \r\n9.6 小结 \r\n\r\n第10章 数据维护\r\n\r\n10.1 移动数据\r\n10.1.1 定界ASCII文件\r\n10.1.2 非定界ASCII文件\r\n10.1.3 IXF文件\r\n10.1.4 工作表格式文件\r\n10.2 数据移动工具\r\n10.2.1 导出工具\r\n10.2.2 导入工具 \r\n10.2.3 载入工具 \r\n10.2.4 LOAD QUERY命令 \r\n10.2.5 SET INTEGRITY语句 \r\n10.2.6 DB2MOVE工具 \r\n10.3 数据维护\r\n10.3.1 分析数据的物理组织\r\n10.3.2 表重组\r\n10.3.3 生成统计信息 \r\n10.3.4 Rebind工具\r\n10.4 数据维护过程\r\n10.4.1 模拟产品环境 \r\n10.4.2 DB2LOOK工具 \r\n10.5 小结 \r\n\r\n第11章 数据库恢复\r\n\r\n11.1 数据库恢复概念\r\n11.1.1 工作单元\r\n11.1.2 事务\r\n11.2 恢复类型\r\n11.2.1 崩溃恢复\r\n11.2.2 版本恢复\r\n11.2.3 前滚恢复\r\n11.3 恢复策略\r\n11.3.1 可恢复和不可恢复数据库\r\n11.3.2 联机和脱机访问\r\n11.4 使用日志文件\r\n11.4.1 日志缓冲区\r\n11.4.2 主日志文件和辅助日志文件\r\n11.4.3 日志类型 \r\n11.4.4 日志文件的使用 \r\n11.5 使用BACKUP和RESTORE进行版本恢复 \r\n11.6 前滚恢复 \r\n11.7 管理日志文件 \r\n11.8 其他需要考虑的恢复事项 \r\n11.9 SET WRITE命令 \r\n11.10 DB2INIDB命令\r\n11.11 使用分离的镜像克隆数据库\r\n11.12 使用分离的镜像作为备用数据库\r\n11.13 使用分离的镜像作为备份映像\r\n11.14 小结\r\n\r\n第12章 监控和优化\r\n\r\n12.1 性能要素\r\n12.1.1 优化准则\r\n12.1.2 性能改进过程\r\n12.1.3 可对系统进行多大程度的优化\r\n12.1.4 非正式的方法\r\n12.2 DB2体系结构概述\r\n12.2.1 进程模型\r\n12.2.2 查询并行 \r\n12.2.3 DB2内存使用 \r\n12.2.4 SQL编译程序概述 \r\n12.3 DB2排序方法 \r\n12.4 监控DB2系统 \r\n12.5 数据库监控\r\n12.5.1 数据库监控器\r\n12.5.2 快照监控 \r\n12.5.3 事件监控 \r\n12.5.4 其他辅助工具 \r\n12.6 SQL监控\r\n12.6.1 解释表\r\n12.6.2 收集解释数据 \r\n12.6.3 检查解释信息 \r\n12.6.4 使用解释输出的准则 \r\n12.6.5 Index Advisor\r\n12.6.6 配置数据库资源\r\n12.6.7 配置分区内并行 \r\n12.7 性能优化方案 \r\n12.8 诊断和问题确定 \r\n12.8.1 错误消息和SQL代码 \r\n12.8.2 DB2 UDB问题跟踪 \r\n12.9 小结 \r\n\r\n第四部分 应用程序开发\r\n\r\n第13章 应用程序开发综述\r\n\r\n13.1 DB2应用程序开发环境\r\n13.2 DB2编程接口\r\n13.2.1 嵌入式SQL\r\n13.2.2 调用级接口和ODBC \r\n13.2.3 Java接口(JDBC和SQLJ) \r\n13.2.4 本机DB2 API \r\n13.2.5 微软数据对象(DAO、RDO、ADO和OLE-DB)\r\n13.2.6 DB2.NET提供者支持\r\n13.2.7 其他接口和工具\r\n13.3 小结 \r\n\r\n第14章 开发考虑事项\r\n\r\n14.1 嵌入式SQL综述\r\n14.1.1 创建程序包\r\n14.1.2 绑定应用程序 \r\n14.2 CLI和ODBC编程支持\r\n14.2.1 动态嵌入与CLI\r\n14.2.2 ODBC与CLI\r\n14.2.3 设置CLI环境 \r\n14.3 Java编程支持 \r\n14.3.1 JDBC编程\r\n14.3.2 SQLJ编程\r\n14.4 DB2开发中心\r\n14.5 小结\r\n\r\n第15章 开发SQL\r\n\r\n15.1 用户自定义函数\r\n15.1.1 SQL体标量函数 \r\n15.1.2 SQL体表函数 \r\n15.2 结构数据类型 \r\n15.3 模式和别名\r\n15.3.1 模式\r\n15.3.2 别名\r\n15.4 COMMIT和ROLLBACK\r\n15.5 SQL过程语言\r\n15.5.1 BEGIN ATOMIC语句\r\n15.5.2 DECLARE语句\r\n15.5.3 SET语句\r\n15.5.4 IF/THEN/ELSE语句 \r\n15.5.5 WHILE语句 \r\n15.5.6 FOR语句\r\n15.5.7 ITERATE语句\r\n15.5.8 LEAVE语句\r\n15.5.9 RETURN语句\r\n15.5.10 SIGNAL语句\r\n15.5.11 GET DIAGNOSTICS语句\r\n15.5.12 SQL PL实例\r\n15.5.13 存储过程中的SQL PL \r\n15.6 小结 \r\n\r\n第五部分 附录\r\n\r\n附录A DB2 UDB V8.1认证考试目标 \r\n附录B 光盘安装说明 \r\nDB2 大事记
本书是IBM关系数据库服务器,即DB2 通用数据库8.1版本的完整指南。DB2通用数据库(DB2 UDB)8.1版本适用于许多操作系统,本书的撰写已考虑到这一点。DB2 UDB在不同操作系统上的显著差别都突出注明。如果你计划通过认证或想了解IBM新的功能强大的DB2 UDB数据库服务器,请继续往下阅读。
本书分为四个部分:
·第一部分-DB2 UDB入门(第1~4章)
第1、2、3和4章讨论DB2 UDB服务器和客户端的安装和配置。
·第二部分-使用SQL(第5~8章)
第5、6和7章讨论结构化查询语言(SQL)。第8章讨论数据库并发性。
·第三部分-DB2 UDB管理(第9~12章)
第9章讨论创建DB2 UDB数据库及其相关的表空间。第10和第11章讨论常用管理任务。第12章讨论数据库监控和性能方面的考虑。
·第四部分-应用程序开发(第13~15章)
第13章给出DBA应用程序开发的介绍。第14章处理一些有关应用程序开发的DBA活动。第15章讨论在编程环境使用SQL。
本书可用作参加DB2通用数据库8.1版本认证考试700和701的备考指南或者作为掌握DB2通用数据库8.1版本的指南。实际使用DB2通用数据库8.1版本是准备DB2 UDB 8.1版本认证考试的最佳方式!
考试700函盖DB2 V8.1家族基础知识,而考试701涵盖DB2 V8.1 for Linux、UNIX和Windows数据库管理知识。
考试703和704的一些参考书如下:
·考试703-DB2 V8.1家族应用开发
《DB2 UDB v8.1 Application Development Certificaion Guide》(2/e,Steve Sanyal,Kevin Gashyna,David Martineau,Mike Kyprianou,0-13-046391-4)
·考试704-DB2 V8.1 for Linux、UNIX和Windows高级数据库管理
《Advanced DBA Certification Guide and Reference for DB2 UDB v8.1 for Linux,UNIX and Windows》(1/e,Snow/Phan,0-13-046388-4)
如果你经常使用SQL过程语言,则《DB2 SQL Procedural Language for Linux,UNIX and Windows》(1/e,Paul Yip等,0-13-100772-6,Prentice Hall)也是一本很好的参考书。
注意 有关DB2 UDB认证的更多信息可在http://www.ibm.com/certify和附录A“DB2 UDB v8.1认证考试目标”中找到。
约定
SQL不是大小写敏感的语言,因此不管SQL关键字或数据库对象(表名或列名)是大写还是小写形式,查询的结果都是一样的。当然,保存在数据库中的数据和该数据的输入形式(包括大小写)绝对一致。因此,上述查询只会找到姓为“WONG”或“BAKLARZ”的考生。如果数据以“Wong”形式存储,则不会被检索出来。
DB2命令在命令行处理器(CLP)工具中调用。该工具接受大小写字母的命令。CLP程序本身是一个名为db2的可执行文件。在某些操作系统中,如AIX,程序名是大小写敏感的。因此,在输入程序名时要注意使用适当的形式。
在本书中有一些和操作系统相关的命令。如果命令必须是小写的,则以小写显示。例如,UNIX中创建用户的命令为mkuser命令。
有时会提供一些注释来突出DB2 UDB V8.1中新的独特之处或特征:
注意 用于解释操作系统的一个微小差异或总结一个概念。
注意 DB2版本8.1专有特征以注释格式突出显示。
在本书中有一些语法图。我们建议使用命令行处理器或参阅《DB2 UDB V8.1命令参考手册》来验证DB2 UDB命令的句法。使用《DB2 UDB V8.1 SQL 参考手册》来验证SQL语句的句法。
致谢
本书为版本8.1进行更新,因此发行了第五版。我们要感谢许多客户、同事和技术支持人员,感谢他们对DB2不断改进的努力以及对本书的反馈。
在此,我们特别要感谢:
·Susan Visser,感谢她对更新本书的鼓励和指导。
·Blair Adamache、Ken Chen、Jose Cuan、Jason Gartner、Bob Harbus、Juliana Hsu、Leo Lau、Mark Leitch、Dale McInnis、Serge Rielau、Jim Stittle、Carmen Wong、Paul Yip和Paul Zikopolous,感谢他们审查了早期样搞。
·Thomas Chu和John Botsford为我们提供beta代码。
·Bert Nicol在办公室为我们规划。
·Judith Escott,感谢他的管理支持并长期致力于提供全球DB2技术支持。
·DB2开发小组,感谢他们对本书持续的支持。
我经常庆幸我有一个善解人意的家庭(以及狗和猫!)。我在更新本书时时常工作到深夜,周末也持续工作。不用说,没有他们的帮助和耐心我无法完成这项工作!谢谢Katrina、Geoff和Andrew!
George
借此机会我要感谢我的家庭:Shirley、Dana和Austin。我的任何成功都归功于他们的支持和理解,没有他们我不可能有任何成功。他们还教给我在不为这本书忙碌时如何度假。
Bill