DB2基本知识
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Compile and Linkedit
Load MODULE
When executing , system will check the Timestamp(Consistency Token) of Load MODULE and Plan which is made by Pre-compiler.
17 2010-11-17
Coding Aids
DSNTIAR/DANTIR
SQL错误返回代码解释例程,在应用程序中调 用该例程以获得系统标准的错误解释。 CALL DSNTIAR
DCLGEN
根据DB2中的Table定义将表的定义描述生成 到指定的数据集中。
Include statement
18 2010-11-17
OPEN the CURSOR
----
Execution
EXEC SQL OPEN K9 END-EXEC.
FETCH RESULT ROWS ONE AT A TIME
EXEC SQL FETCH K9 INTO :EMPNO,:NAME END-EXEC.
CLOSE CURSOR when finished
IMS Attach
2 2010-11-17
DB2 Object
CATALOG
DB2 SUBSYSTEM
DIRECTORY OTHER SYSTEM OBJECTS
DATABASE 1 TABLE SPACES1
DATABASE2.etc. TABLE SPACES2
STORAGE GROUP1 VOLUME1 VOLUME2
13 2010-11-17
Cursors
在查询数据库可能返回多条数据记录时, 使用“游标”(Cursors)来完成对记录 的处理。使用的语句包括: DECLARE -声明一个游标 OPEN -打开游标 FETCH -读取游标中的一条记录 CLOSE CURSOR -关闭游标
14 2010-11-17
Source Program .. EXEC SQL …
DB2 Pre-Compile DB2 CATALOG Table/Column Description Authorization SYSDBRM
Language Interface
Source
DBRM SQL STMNTS BIND DB2 Directory PLAN (Package)
EXEC SQL CLOSE K9 END-EXEC.
注意:游标操作在open时才对数据库中的table进行选择处 注意: 理。
15 2010-11-17
SQLCASQLCA-SQL Communication Area
应用程序调用 DB2 时使用的系统通讯 区,其中的返回代码域可以用来判断 SQL调用是否成功。常用的返回代码域 有: SQLCODE(INTEGER) –调用执行返回代 码(000-成功;<0-调用失败,例如:-530 New foreign key value is invalid ; >0-调用 警告,例如:+100 Row not found); SQLSTATE –调用返回代码详细说明。
Bind:
– 使用数据库的catalog信息 , 检测错误(资源 的授权、DB2的关系数据库规则); – 对每一个SQL语句采取相应的调用策略(资 源锁、索引的使用); – 将访问策略存储为plan(或是一个package); – Plan 由集成的一系列DBRMs组成。
9 2010-11-17
应用程序的编译以及运行过程
DB2 SQL 语言
SQL(Structured Query Language),在DB2中包括: DDL(Data Definition Language):用于数据库对象 的定义
CRATE COMMENT ON ALTER LABEL ON
DML(Data Manipulation Language):用于数据库 的数据操作
11 2010-11-17
DB2 的 SQL 编程
基本 SQL 语句:
SELECT
SELECT FROM WHERE Column,Column Table Column=Value
UPDATE
UPDATE Table SET Value WHERE Column=Value
DELETE
DELETE FROM Table WHERE Column=Value
INSERT INSERT INTO Table VALUES(..,..,..,)
12 2010-11-17
主机变量(Host variables) 主机变量(Host variables)
嵌入式语言中定义的变量,在SQL语句中可以使用,如 下例: EXEC SQL UPDATE TMPTABLE SET Salary = Salary * :PERCENT WHERE Jobcode = :JCODE END-EXEC. 使用时在变量前必须使用冒号(:)来标示主机变量。 在使用可能定义为 NULL 的域时,应当使用指针变量 来判断值域是否是 null 值,如下例: SELECT COLA INTO :A:AIND 其中,AIND 定义为指针变量 s9(4) comp。 如果该值域为null , 返回的指针变量值将小于零。
TABLE1 INDEX1 VIEW1
TABLE2. etc. INDEX2.etc. VIEW2 VIEW3.etc
3 2010-11-17
STORAGE GROUP2 VOLUME3
DB2 Objects 概述
CATALOG : DB系统定义信息 DIRECTORY : DB系统管理信息 DATABASE : 逻辑数据库定义 TABLESPACES : 定义数据库表的物理存放 STORAGE GROUP : 定义物理卷空间分配 TABLE : 关系数据库的基本表 INDEX : 建立在TABLE上的索引 VIEW : 视图,建立在TABLE上的虚表
DB2/OS390
DB2 系统介绍 DB2 编程 DB2 的常用UTILITY
1 2010-11-17
DB2 系统架构示意
在OS/390系统中,DB2作为独立的数据库 应用系统,通过与其他应用间的接口 (ATTCHMENT)进行数据交换。
CICS Attach
DB2
TSO Attach OS/390
6 2010-11-17
DB2 数据库的基本建立过程
建立存储组 ( Storage Group); 建立逻辑数据库 (DataBase); 定义表空间 (Tablespace); 建立表 (Table); 在表的基础上建立索引 (Index) ; 装载、处理数据 (LOAD/INSERT);
7 2010-11-17
Байду номын сангаас
5 2010-11-17
TABLE SPACES
Table space 可以分为三种基本类型: Partitioned :在一个 Table space 中只有一个 表(table),实际的数据还可以存放在不同 的数据集中(按照某种键值区分); Segmented :在一个 Table space 中允许有一个 或多个Table,空间的分配以段(segment)来 组织,但在每一个段中只存放同一个表; Simple :允许一个或者多个表存放于同一个 Table space 中,空间分配以 page 来组织。
DB2 online utility –COPY/IMAGE
COPY-将一个tablespace拷贝到顺序数据集中,
– FULLCOPY / INCREMENTAL COPY;
//IMGINC JOB (ACCTNUM,EXP),'PGMRNAME', TIME=1440, NOTIFY=&SYSUID, // REGION=6500K,CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1) //STEP1 EXEC DSNUPROC,PARM='FJDB,COPY',COND=(4,LT),REGION=1024K //DSNTRACE DD SYSOUT=* //SYSCOPY1 DD DSN=DBA1.IMAGCOPY.INC1.NSPATEL, DISP=(NEW,CATLG), // UNIT=3390,VOL=SER=NGDAT1,SPACE=(CYL,(1,1)) //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSIN DD * COPY TABLESPACE NASEDB.NSPATEL COPYDDN SYSCOPY1 FULL NO SHRLEVEL REFERENCE
16 2010-11-17
Coding Aids
Whenever statement
用来处理可能出现的例外状况,在程序中一 旦定义全程使用。 EXEC SQL WHENEVER condition action END-EXEC.
Condition 包括: SQLERROR– SQLCODE 小于零; SQLWARNING – SQLCODE 大于零; NOT FOUND – SQLCODE = 100; Action 可以为 GO TO :Lable 或者是 CONTINUE.
10 2010-11-17
EXECUTE
BIND PACKAGE
//PH02CS04 EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(4,LT) //DBRMLIB DD DSN=VGUSR.MVSCICS.DBRMLIB,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //REPORT DD SYSOUT=* //SYSIN DD DUMMY //SYSTSIN DD * DSN SYSTEM(DSN1) BIND PACKAGE(NASE001) MEMBER(NAH2020) ACT(REP) VALIDATE(BIND) ISOLATION(CS) EXPLAIN(YES) QUALIFIER(NASE001) OWNER(IBMUSER) END
19 2010-11-17
DB2 online utility –MERGECOPY
MERGECOPY -建立(或合并)数据的完全拷贝(full image copies )或增量拷贝(incremental image copies);
//STEP1 EXEC DSNUPROC,PARM=‘FJDB,CPY1',COND=(4,LT),REGION=0M //DSNTRACE DD SYSOUT=* //SYSCOPY1 DD DSN=NASE.MERGCOPY.NSPATEL.NO3, // DISP=(NEW,CATLG), // UNIT=3390,SPACE=(TRK,(3,1)), // VOL=SER=DB2VOL //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSIN DD * MERGECOPY TABLESPACE NASEDB.NSPATEL COPYDDN(SYSCOPY1) NEWCOPY YES
4 2010-11-17
TABLE/TABLE SPACES
在DB2的中,PAGE是最小的存储单元, 也是I/O的基本单位,大小为4K或32K; TABLE TABLE中的一行(ROW)必须存放在 ROW 单个PAGE中,一个PAGE中可以存放多 PAGE PAGE 个行(必须是同一个TABLE); 在资源管理中,Tablespaces, table, 或 page 都可以作为资源锁的单元;
游标(CURSOR)使用例程 游标(CURSOR)使用例程
DEFINE A CURSOR
EXEC SQL DECLARE K9 CURSOR FOR SELECT EMPNO,LASTNAME FROM TEMP1 WHERE DEPNO = :DPT END-EXEC.
----- Definition
UPDATE DELETE GRANT SELECT INSERT REVOKE
8 2010-11-17
DCL(Data Control Language):资源控制管理
SQL 程序的预编译
DB2 的预编译(Pre-compile):
- 将SQL语句与非SQL语句分离; - 建立数据库访问模块(DBRM); - 检测语法错误;