DB2 UDB V8.1 Family Application Development 认证准备教程(Test 703教程)(2)
- 格式:doc
- 大小:95.50 KB
- 文档页数:17
DB2 9 认证路线图
DB2 9 认证路线图
DB2 认证计划特别好的一点在于其模块性。
通过“DB2 9 Family Fundamentals” 入门考试 #730 之后,就可以参加您喜欢的任何考试。
每通过一门考试都会使您获得另一个认证。
对于 Linux、UNIX 和 Windows DBA,路线图显示了三个递增的 DBA 认证级别:
如果您已经通过 DB2 Version 8 数据库管理员认证,DB2 9 认证计划提供了一个单项考试,通过它可以将认证升级到 DB2 9。
这个单项考试就是“DB2 9 for Linux, UNIX and Windows Upgrade Exam, 736”。
如果您是一位经过认证的 Version 8 DBA,您可以参加这个升级考试(必须已通过 DB2 UDB V8.1 Family Fundamentals 考试 700),或者参加标准数据库管理考试 731,以将 DBA 证书升级到 DB2 9。
Upgrade 测试的特点是问题更少,是一项更短
的考试,但是一些人更倾向于参加更全面的 DBA 考试 731。
这取决于您的选择。
表4. DB2 9 认证书籍。
简介如果对于IBM® DB2® Universal Database™(UDB)for Linux、UNIX® 和Windows®,您还是位新手,或者您正准备参加认证考试,那么本文可能会使您在设法掌握有关DB2 环境的主要概念方面节省一些时间。
常言道:一图抵千言。
尽管DB2 认证指南(Certification Guide)为您备考作了大量工作,但是它没有为您提供图解形式的DB2 概述。
请在阅读认证指南之前先阅读本文,我相信这会大大地缩短您的准备时间。
在本文中,我使用DB2 来指代DB2 通用数据库V8.1 for UNIX、Linux 和Windows。
我建议您打印本文(使用彩色打印机!)而不要联机阅读,因为我将一直引用下面这张图。
首先会简略地说明一下概念,然后在最后一节中我们会使用案例研究把这些概念都串起来。
在图中,我们使用蓝色来表示用于查询配置文件内容的命令,用黑色来表示更改这些内容的语法,并用紫色来显示有关如何使用命令的示例。
图1 -DB2 V8 环境在DB2 中,实例提供了独立的环境,可在其中创建数据库对象并针对这些对象运行应用程序。
由于这些环境是独立的,所以两个或更多的单独实例的对象可以有相同的名称。
在图1中,有一个名为“MYDB2”的数据库,它与实例“DB2”相关;还有一个同名的数据库,但它与实例“MyInst”相关。
实例允许用户具有用于生产、测试和开发目的的不同环境。
以下是一些与实例相关的命令:∙通过从命令行处理器(CLP)发出下列命令来显式地创建实例:db2icrt <instance name>∙∙在Windows 平台上首次安装DB2 时,缺省情况下会创建一个称为“DB2”的实例。
在UNIX 环境中,如果您选择创建实例,那么缺省的实例名称为“db2inst1”。
∙要删除实例,请使用这条命令:db2idrop <instance name>∙∙要启动实例,请使用这条命令:db2start∙∙要停止实例,请使用这条命令:db2stop∙创建了实例后,就会生成到DB2 代码的链接。
DB2安装本文以DB2 v8.2版本为例讲解DB2 安装初始界面(图一)双击DB2安装光盘中的setup.exe文件会出现如上图一显示的安装初始界面,选择安装产品。
这里我们选择安装DB2 UDB企业服务器版,下一步接下来出现欢迎使用“DB2 安装”向导界面点击下一步出现上图的许可证协议界面,选择我接受许可证协议中的全部条款,点击下一步(当然你也可以不接受,点击下一步退出本软件的安装)选择安装类型提供三种安装类型,这边我直接点击下一步,继续软件的安装。
选择下一步可以选择安装在那个分区,并指定安装的目录,然后选择下一步为DB2 管理服务器设置用户信息,如果不是域环境,域可以留空,为默认用户db2admin设定一个密码。
选择下一步默认,下一步出现如下界面点击下一步继续下一步继续如果目前没有此实例的管理联系人,可以选择将任务延迟到完成安装后进行,然后选择下一步出现下图所示的安装信息的汇总。
点击安装。
耐心等待几分钟来完成DB2的安装。
点击完成,至此DB2数据库的安装过程就结束。
DB2的管理1.、创建数据库打开DB2的控制中心开始→程序→IBM DB2→一般管理工具→控制中心或者点击桌面右下角的绿色小图标,选择DB2控制中心…下图为DB2控制中心管理界面点击所有数据库选择创建新的数据库后出现如下界面指定创建的数据库名,缺省驱动器,下一步默认,下一步下一步继续,直到完成至此,数据库test就创建完成。
如何在新建的test库创建表及表中插入数据还是通过控制中心,点击所有数据库,会显示刚才创建的test库,双击库名展开,点击表,同样在界面的右侧下方,选择创建新的表下一步选择添加,在创建的表test,添加一列这里我填写的是test,然后点应用,确定。
关闭添加列界面,重新回到刚才界面,点下一步继续,表空间,键,维,约束可以是默认,出现下面界面,点击完成。
通过上面的操作,我们创建了一个名为test的库,并且往这个库创建了一个名为test的表,表插入一列,列名为test。
Red Hat Enterprise linux5 安装db2v8.1说明首先安装JAVA,版本1.4.1以上应该就可以了,我的是1.6.0的版本。
安装完JAVA后,配置环境变量。
这个讲一下,在/ect/profile文件中末尾处加上3句话就可以了可以在终端中输入gnome-open /ect/profile使用文本编辑器打开profile文件进行修改。
以下是要添加的3句话export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0#这是你的jdk的安装路径export CLASSPATH=.:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar#注意一点,linux中使用$符号取变量值,windows中使用两个'%',linux中用英文半角符冒号':'来表示分隔,而windows中使用分号';'来表示分隔export PATH=$JAVA_HOME/bin:$PATH#这里要注意将JAVA的变量置前,不然会出现一些很诡异的问题,那些诡异问题我就不说了,浪费口水添加并保存后重启linux,否则该变量不会及时生效。
以上是关于JAVA的配置问题,接下来是配置db2v8.1了。
现在用db2v8.1的比较少见,用的都是比较高的版本,高版本的我就不说了,那些东西越来越容易安装了。
以下是我的安装方式:将db2v8.1光盘中的内容考到/home下,然后在终端中给权限,chmod -R 777 DB2v8.1,或者使用图形界面给读写权限修改/home/DB2v8.1/db2/linux/install/db2jinst文件Gnome-open /home/DB2v8.1/db2/linux/install/db2jinst找到设置JAVA_HOME变量值的地方,直接将你的JAVA的路径给它DB2SetupRun="DB2Setup"if [ $rc -eq 249 -o $rc -eq 1 -o $rc -eq 127 ]then# The local JRE test failed. Run the JRE as shipped on the CD.JAVA_PATH="/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/bin"#这是我的路径# "$INST_ROOT/java/jre/bin"if [ ! -d $JAVA_PATH ]thenJAVA_PATH="/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/bin"#这是我的路径DB2SetupRun="-Ddb2.nostrict=true DB2JDKTester"fiif [ ! -d $JAVA_PATH ]thenecho "JRE not found."exit 1fiJAVA_HOME=`dirname ${JAVA_PATH?}`$JAVA_PATH/$JAVA_INTERPRETER $JAVA_OPTIONS -cp $JAVA_CLASSPATH $DB2SetupRun "$@" 2> /tmp/db2setup.err.runningrc=$?fi执行下面的5句话可以出现db2的安装向导界面chcon -t textrel_shlib_t '/home/DB2v8.1/db2/linux/install/libdb2osse.so.1'chcon -t textrel_shlib_t '/home/DB2v8.1/db2/linux/install/libinpro.so.1'chcon -t textrel_shlib_t '/home/DB2v8.1/db2/linux/install/libdb2locale.so.1'chcon -t textrel_shlib_t '/home/DB2v8.1/db2/linux/install/libdb2ure.so.1'chcon -t textrel_shlib_t '/home/DB2v8.1/db2/linux/install/libintcp.a'之前在网上查过很多文档,大部分都在说什么db2v8.1不支持rhel5 或linux9上的图形界面,或者是要手工一个一个安装,从建用户到装实例,这还不把人折腾死啊,万一中间出个什么问题,又得弄个半十天,那不糗大了啊,我在ibm的官网上也没查到说是不支持RHEL5的信息,具体查看https:///developerworks/wikis/display/im/DB2+UDB+V8.1+Validated+Linux+Envir onment如图然后执行下面的语句,不然会再安装时出现package 没有被安装的问题/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2msen81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2cliv81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2jhen81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2cj81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2dwcm81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2repl81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2cucs81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2rte81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2icut81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2sp81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2icuc81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2engn81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2chen81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2jdbc81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2ca81-8.1.0-0.i386.rpm/bin/rpm -ivf /home/DB2v8.1/db2/linux/IBM_db2cc81-8.1.0-0.i386.rpm这就相当于手工把db2v8.1的一部分基础组件装上了,然后执行chcon -t textrel_shlib_t '/opt/IBM/db2/V8.1/lib/libdb2osse.so.1'chcon -t textrel_shlib_t '/opt/IBM/db2/V8.1/lib/libinpro.so.1'chcon -t textrel_shlib_t '/opt/IBM/db2/V8.1/lib/libdb2locale.so.1'chcon -t textrel_shlib_t '/opt/IBM/db2/V8.1/lib/libdb2ure.so.1'chcon -t textrel_shlib_t '/opt/IBM/db2/V8.1/lib/libcatcp.a'chcon -t textrel_shlib_t '/opt/IBM/db2/V8.1/lib/libdb2trcapi.so.1'再然后修改/opt/IBM/db2/V8.1/instance/db2iutil这个文件Gnome-open /opt/IBM/db2/V8.1/instance/db2iutil将所有的tail +2 全部改成tail -n +2后保存文件最后cd /home/DB2v8.1./db2setup就出现db2的安装向导界面了,开始安装,基本就不会在出问题了,这个安装就相当于手工建用户和组还有实例。
第一章UDB概况提纲:1、UDB的产品家族2、UDB中各组件的功能3、实例(instance)的概念及操作4、UDB变量的设置、UDB的产品家族UDB(Universal Database )的前身为DB2,是IBM公司开发的关系型数据库治理系统。
从其诞生之日开始,DB2就定位于要为各类规模的企业提供稳固、高效的数据治理支持。
能够说,DB2是当前适用范围最普遍的数据库产品。
咱们对DB2产品的划分通常分为两种方式:一种方式是按其所能支持的硬件和操作系统平台进行划分,另一种方式是按其所能支持的用户规模的不同进行划分。
DB2产品几乎覆盖了当前所有流行的硬件和操作系统平台。
在大型机操作系统上,有DB2 for OS/390、DB2 for MVS/ESA、DB2 for VSE 和DB2 for VM等多种产品;在由IBM公司设计的小型机AS/400上,DB2已经嵌入在操作系统OS/400当中,成为其不可分割的一部份。
DB2对UNIX操作系统的支持一样十分普遍,能够在AIX、HP-UX、Solaris、SCO-UNIX、SINIX 等多种系统上找到其相应的版本。
另外,在PC操作系统上,DB2能够对Window 9x、Windows NT和OS/2等多种操作系统提供支持。
UDB 还增加了对Linux操作系统的支持。
以上咱们所提到的只是DB2效劳器所能运行的平台,DB2的客户端所能支持的平台更为普遍,除以上提到的所有平台之外,DB2的客户端还能运行在Dos、Windows 、Mac OS和SGI公司的IRIS系统之上。
最先的 DB2产品是DB2 for MVS/ESA,以后的产品设计时都延续了它的大体结构及关键算法,保障了不同系统之间的可移植性和互操作性。
可是,由于不同操作系统之间存在着不小的不同,DB2系列产品还针对相应的平台进行了必然的优化,以适应操作系统的特性。
UDB产品除能够对各类硬件和操作系统平台进行支持之外,为了适应不同用户群的需要,UDB提供了不同级别的产品,对小到个人用户,大到跨国企业的不同需求提供支持。
DB2安装步骤(一)手动安装步骤0、注意:在安装DB2软件之前,需要先确定主机hostname。
如果在安装DB2软件和创建数据库实例之后再修改主机的hostname,则需要修改主机上的每一个数据库实例中/home/InstName/sqllib/db2nodes.cfg文件的内容。
1、运行./db2_install –p DB2.ESE 安装必要的文件,在product keyword部分填写DB2.ESE。
2、以root用户运行,建立3个组分别对应于3个DB2用户:instance owner,fenced user,DAS user,命令如下:groupadd dasadm1groupadd db2grp1groupadd db2fgrp13、以root用户运行,建立3个DB2用户,并且指定3个用户所在目录,一般为/opt,命令如下:useradd -g db2grp1 -m -d /db2home/db2inst1 db2inst1 -p passwduseradd -g db2frgp1 -m -d /db2home/db2fenc1 db2fenc1 -p passwduseradd -g dasadm1 -m -d /db2home/dasusr1 dasusr1 -p passwd4、以root用户运行,给3个用户设定密码,命令如下:passwd db2inst1passwd db2fenc1passwd dasusr15、在手动创建实例之前,最好先升级DB2的补丁。
升级补丁的步骤请参见下面的章节《DB2升级补丁步骤》。
先升级补丁,再建立数据库实例,这样做的好处是在升级时不需要更新数据库实例和管理器实例,也不需要绑定bnd文件。
6、创建一个DB2 instance,使用db2icrt命令:a、以root用户运行b、输入以下命令:/opt/IBM/db2/V8.1/instance/db2icrt [-a AuthType] -u FencedID InstNme其中:AuthType表示instance authentication的类型,默认为SERVER,其他类型包括CLIENT,DCS,SERVER_ENCRYPT,or DCS_ENCRYPT。
IBM DB2 UDB产品介绍IBM DB2 UDB产品介绍前言数据库管理系统,尤其是关系型数据库,与IBM数据库有着不可分割的关系。
三十多年来从理论研究到具体的系统实现,IBM数据库研究人员对数据库管理系统的发展作出了极大的贡献。
70年代之前,数据库中的数据结构以层次型(如IBM IMS数据库)及网络型为主。
在这些数据库中记录与记录之间往往存在着指针(pointers)以方便应用程序搜寻有关联的数据。
1970年IBM数据库研究中心的E.F.Codd博士在其论文[Codd70]中提出了关系型的数据库模式。
在这创新的理论中记录与记录的关系建立在它们共享的数值上而非基于隐藏的指针。
数据库的查询因而可以用非过程化(nonprocedural)的语句表达。
Codd同时证明了用一阶谓词逻辑微积分(first-order predicate calculus)等数学理论作为非过程化语句基础的可能性,并进一步地发展了关系微积分(relational calulus[Codd71a])与关系代数(relational algebra[Codd71b]),奠定了关系型数据库日后发展的理论基础。
为此E.F.Codd博士在1981年得到了计算机科学界的最高荣誉奖ACM图灵奖(ACM Turing Award)。
1973年位于美国加州圣荷西市的IBM数据库研究中心开始了一个大的关系型数据库系统研究项目System R[Astrahan 76],探讨并验证在多用户与大量数据下关系型数据库的实际可行性。
System R对关系型数据库的商业化起着关键性的催化作用。
在D.Chamberlin博士的领导下System R的一个研究小组发明了一套比关系微积分与关系代数更适合最终用户使用的非程序化查询语言SQL[Chamberlin74,76,80]。
SQL的设计宗旨是面向最终用户,达到简单,易学,易用。
并且,SQL把早期数据管理系统中各种独立的功能如查询,数据修改,数据定义和控制等整合到一个单一的语言环境内。
定制DB2 通用数据库命令行处理器引言IBM® DB2® Universal Database™ Linux、UNIX® 和Windows® 版(下称DB2 UDB)提供了两种从命令行界面输入命令的方式。
当以交互(Interactive)模式使用DB2 UDB 命令行处理器(DB2 UDB Command Line Processor,DB2 UDB CLP)时,您不必在DB2 UDB 命令或SQL 查询前加上关键字db2。
请看一下图1,图中在运行于交互模式下的DB2 UDB CLP 中输入了SELECT *...语句。
您知道这个特定表(STAFF)位于哪个数据库或实例吗?您大概不知道吧(虽然对于这个特例,您可以猜测);可是,DB2 UDB 知道!图 1. 缺省的CLP 视图不会告诉您连接到了哪个实例现在看一眼下面图2中一模一样的查询。
您现在能回答我的问题了吗?注意到有什么不同了吗?图 2. 对CLP 进行了定制,以向您显示您所连接的实例和数据库带修订包1(Fix Pack 1,FP1)的DB2 UDB V8.1 提供了很棒的新功能,这项功能可以让您在运行于交互模式时,定制DB2 UDB CLP 提示符(后文所指的DB2 UDB CLP 就是运行于交互模式的DB2 UDB CLP)。
您可以使用这项新的定制功能,把您自己的文本和反映当前实例连接(instance attachment)和/或数据库连接(database connection)的上下文(context)的变量添加到输出显示。
本文将向您介绍这项新的定制功能。
回页首定制交互模式下的DB2 UDB CLP带FP1 的DB2 V8.1 新增了可定制的DB2 UDB CLP 交互提示符功能。
现在DB2 UDB CLP 提示符可以反映当前实例连接和数据库连接的上下文,还可以显示特定的字符消息。
如果没有该项功能,使用交互模式下的DB2 CLP 会显示硬编码的提示符,如图3所示。
DB2安装手册目录1软件安装说明 (1)2安装流程 (1)3安装前的准备 (1)4系统安装 (1)4.1安装DB2V8.1 (1)4.2安装DB2补丁FP8 (11)1软件安装说明DB2为IDS、TIM、PORTAL提供数据存储的基础支撑环境。
2安装流程●安装DB2V8.1●安装DB2补丁FP83安装前的准备●操作系统已设置为中文语言环境,详见《Linux中文语言环境安装手册》●对本机的域名解析设置正确4系统安装4.1安装DB2 V8.11.解开DB28.2.tar文件,运行:db2setuptar -xf DB28.1.6.tar2.出现欢迎界面,点击“安装产品”3.选择“DB2 UDB企业服务器版”,点击“下一步”4.点击“下一步”5.出现软件许可协议页面,选择“接受”,点击“下一步”6.选择“典型安装”,点击“下一步”7.选择“在此计算机上安装DB2 UDB企业服务器版”,点击“下一步”8.使用系统提供的默认用户和组,输入密码,点击“下一步”9.选择“创建DB2实例”,点击“下一步”10.选择“单一分区实例”,点击“下一步”11.使用系统提供的默认用户和组,输入密码,点击“下一步”12.使用系统提供的默认用户和组,输入密码,点击“下一步”13.选择“使用本地数据库”,点击“下一步”14.点击“下一步”15.点击“下一步”16.弹出警告窗口,点击“确定”17.点击“下一步”18.点击“完成”19.开始安装,显示安装进度条20.安装完成,点击“完成”21.用户和组自动创建了22.检查DB2版本su - db2inst1db2level4.2安装DB2补丁FP81.在安装Fixpack之前,确认DB2的所有的进程都已经停止2.插入DB2_Patch.ISO,运行installFixPak -y3.更新DB2的实例到新的补丁级别/opt/IBM/db2/V8.1/instance/db2iupdt db2inst14.检查DB2版本su - db2inst1db2level5.启动DB2su - db2inst1db2startexit。
DB2(2)DB2数据库操纵更改和访问数据设计数据库应用程序时,更改数据是需要理解的一个关键过程。
它取决于几个因素:数据模型和元数据(必须处理的编目数据、类型、限制、检查等是什么?)业务需求(需要如何识别和修改数据库中的数据?)授权以及在用户级、表级和列级上的安全(某种特定的更改是否被允许?)访问数据的接口(如何提供更改数据的接口?)在应用程序的设计当中,应该使用DB2 的哪些功能?用户不能修改系统编目数据。
编目表和视图存储了关于数据的逻辑和物理定义的元数据。
SYSIBM 模式拥有表,而这些表的视图则是属于SYSCAT 模式的。
您可以查询编目,以获得有用的信息。
为了作出适当的选择,需要同时考虑数据库设计和应用程序的目标环境。
例如,您可以选择规定将一些业务规则放到数据库设计中,而不是将逻辑包括在应用程序中。
您所使用的功能以及使用它们的程度可能会有很大的不同。
需要考虑的功能包括:访问数据时使用:嵌入式SQL,包括用于Java 的嵌入式SQL(SQLJ)。
DB2 Call Level Interface (DB2 CLI)、Open Database Connectivity (ODBC) 以及Java Database Connectivity (JDBC) 。
Microsoft 规范。
Perl DBI。
查询产品。
控制数据值时使用:数据类型(内置的或用户定义的)。
表检查约束。
参照完整性约束。
使用CHECK OPTION 的视图。
应用程序逻辑和变量类型。
控制数据值之间的关系时使用:参照完整性约束。
触发器。
应用程序逻辑。
执行服务器上的程序时使用:存储过程。
用户定义函数。
触发器。
将以数据为焦点的逻辑从应用程序迁移到数据库带来的关键优势是,应用程序变得更加独立于数据。
围绕着数据的逻辑集中在一个地方,即数据库。
这意味着您可以只更改一次数据或数据逻辑,就能够立即影响所有依赖于该数据的应用程序。
后一种优势诚然非常强大,但是还必须考虑,任何放入到数据库中的数据逻辑同样也会影响数据的所有用户。
您必须考虑,您想要施加在数据上的规则和约束是否适用于该数据的所有用户,或者只是适用于一个应用程序的用户。
应用程序需求或许也可以帮助您决定是对数据库施加规则,还是对应用程序施加规则。
例如,您可能需要按照某种特定的顺序处理数据条目上的合法性错误。
通常,应该在应用程序代码中进行这种类型的数据合法性检查。
还应考虑使用该应用程序时所在的计算环境。
您需要考虑在客户端机器上执行逻辑与在数据库服务器上运行逻辑之间的不同,在数据库服务器上运行逻辑时要使用存储过程,或者UDF,或者结合使用两者,这种方式一般来说要更强大一些。
在某些情况下,正确的方法是同时在应用程序(也许是由于特定于应用程序的需求)和数据库中(也许是由于在应用程序之外要使用其他的交互)施加规则。
访问数据在关系数据库中,必须使用SQL 来访问所需的数据。
不过,可以选择将SQL 集成到应用程序时所采用的方式。
您可以从下列接口及其支持的语言中进行选择:嵌入式SQLC/C++COBOLFORTRANJava 语言(通过SQLJ 或JDBC)REXXDB2 CLI 和ODBCMicrosoft 规范,包括ADO、RDO 和OLE DBVisual Basic、Visual C++ 和.NET 语言Perl DBIPerl像Lotus Approach、IBM Query Management Facility、Microsoft Access 或Microsoft Excel 之类的查询产品。
程序在运行任何可执行的SQL 语句之前,必须建立与目标数据库服务器的连接。
这种连接标识运行该程序的用户的授权ID 以及运行该程序时所在的数据库服务器的名称。
通常,应用程序进程一次只能连接一个数据库服务器,该服务器叫做当前服务器。
不过,在多站点(multisite)更新环境中,应用程序可以连接到多个数据库服务器。
在这种情况下,只有一个服务器可以作为当前服务器。
程序在建立与一个数据库服务器的连接时,可以显式地使用一条连接语句,也可以隐式地连接到缺省的数据库服务器。
Java 应用程序也可以通过一个Connection 实例来建立连接。
跨越多个表查询一个数据库可以使用一条SELECT 语句从一个或多个表中查询数据。
您需要具有适当的授权来访问所查询的数据。
查询返回的数据叫做结果集(result set)。
SELECT 语句只是指定结果集所需获取的数据应满足的标准。
SELECT 语句并不指定DB2 返回数据的方式。
DB2 优化器基于来自系统编目表的当前数据库统计信息以及需要考虑使用的计划的类型,构造出一份访问计划,从而决定采用何种方式返回数据。
让我们看看一些示例SELECT 语句。
下面的语句从store(商店)表和product(产品)表中选择所有的商店名和产品名:SELECT a.store_name, b.product_name from STORE a, PRODUCT bStore_name 是store 表中的一个列。
Product_name 是product 表中的一个列。
让我们看看另一个例子。
在employee 表中,我们将选择部门号(WORKDEPT)以及那些最高薪水低于所有其他部门平均薪水的部门中的最高部门薪水(SALARY):SELECT WORKDEPT, MAX(SALARY)FROM EMPLOYEE EMP_CORGROUP BY WORKDEPTHA VING MAX(SALARY) < (SELECT A VG(SALARY)FROM EMPLOYEEWHERE NOT WORKDEPT = EMP_COR.WORKDEPT)跨越联邦数据库查询表联邦系统(federated system)设计用来使数据的访问变得容易,而不管数据存储在哪里。
这可以通过为用户想要访问的所有数据源(表和视图)创建昵称(nickname)来实现。
DB2 联邦系统是一种分布式计算系统,它由一个联邦服务器来控制。
在DB2 安装环境中,可以对任意数量的DB2 实例进行配置,使其担任联邦服务器。
联邦系统还包括多个数据源,联邦服务器将发送查询给这些数据源。
每个数据源由一个关系数据库管理系统的实例,加上该数据库或者该实例所支持的多个数据库组成。
DB2 联邦系统中的数据源可以同时包括Oracle 实例和DB2 家族成员的实例。
数据源是半自治的(semi-autonomous)。
例如,联邦服务器可以在Oracle 应用程序访问某些数据源的同时发送请求给这些相同的Oracle 数据源。
DB2 联邦系统不会搞垄断,或者限制对Oracle 或其他数据源的访问(超出完整性和锁约束)。
对于终端用户和客户机应用程序,数据源呈现为一个单一的、集体的数据库。
在幕后,用户和应用程序是与联邦服务器内的联邦数据库打交道的。
为了从数据源获取数据,用户和应用程序将用DB2 SQL 编写的查询提交给联邦数据库。
然后DB2 将这些查询分发给适当的数据源。
DB2 还提供用于优化查询的访问计划。
在某些情况下,这些计划要求在联邦服务器、而不是数据源上处理查询。
最后,DB2 收集被请求的数据并将其传递给用户和应用程序。
从联邦服务器提交给数据源的查询必须是只读的。
为了写一个数据源(例如,更新一个数据源表),用户和应用程序必须以一种叫做pass through 的特殊模式使用数据源自己的SQL。
例如,假设昵称DEPT 代表远程表EUROPE.PERSON.DEPT。
您可以使用命令select * from DEPT 来查询远程表中的信息。
所有底层的元数据都存储在联邦系统编目中,系统编目是在安装和配置时附带的。
要使用昵称来选择、插入和更新数据,该语句的授权ID 所具有的授权必须包括在昵称级上的授权和在底层表对象数据库级上的授权。
下面展示了如何为用户Eileen 授予在某些索引上对一个昵称的许可,或者撤销这种许可:GRANT INDEX ON <nickname> TO USER EileenREVOKE INDEX ON <nickname> FROM USER Eileen可以使用昵称来创建本地汇总表,如下所示:CREATE TABLE <tablename> LIKE <nickname> DEFINITION ONL Y可以像下面这样使用昵称创建联邦视图:CREATE FEDERA TED VIEW <viewname> AS SELECT <column>..FROM <table>, <nickname>, <view> WHERE <expression>可以使用SET 选项(如(SET node, varchar_no_trailing_blanks, plan_hints))来修改昵称,如下所示:ALTER NICKNAME OPTIONS ( SET varchar_no_trailing_blanks 'y')Pass-through 会话允许客户机使用一个服务器的本地API 或SQL 方言连接到数据库。
在pass-through 会话中使用对象时,应使用服务器的全名,而不是昵称。
函数和表达式什么是DB2 SQL 函数?数据库函数(database function)是一组输入数据值与一组结果值之间的关系。
有两种类型的函数:内置(built-in)函数和用户定义(user-defined)函数。
内置SQL 函数是由数据库管理器提供的。
这些内置函数提供单一的结果值,它们被标识为SYSIBM 模式的一部分。
内置SQL 函数的例子包括像A VG 之类列函数,像+ 之类的操作符函数,像DECIMAL 之类的类型覆盖函数,以及其他的函数,如SUBSTR。
用户定义函数是那些在SYSCA T.FUNCTIONS 中注册到(使用CREATE FUNCTION 语句)一个数据库的函数。
用户定义函数决不是SYSIBM 模式的一部分。
数据库管理器在一个名为SYSFUN 的模式中提供了这样一组函数。
DB2 允许用户和应用程序开发人员将他们自己的函数定义应用于数据库引擎中,以扩展数据库系统的功能。
比起从数据库检索行,然后对检索到的数据应用那些函数的应用程序来,基于用户定义函数的应用程序可以执行得更好。
通过扩展数据库函数,还可以让数据库在应用程序所使用的引擎中使用相同的函数,从而为应用程序和数据库之间提供更多的协作。
函数的使用可以提高应用程序开发人员的生产率,因为更加面向对象。