当前位置:文档之家› DB2基本知识.ppt

DB2基本知识.ppt

Action 可以为 GO TO :Lable 或者是 CONTINUE.
17 2020/4/30
Coding Aids
DSNTIAR/DANTIR
SQL错误返回代码解释例程,在应用程序中调 用该例程以获得系统标准的错误解释。
CALL DSNTIAR
DCLGEN
根据DB2中的Table定义将表的定义描述生成 到指定的数据集中。
DATABASE : 逻辑数据库定义
TABLESPACES : 定义数据库表的物理存放
STORAGE GROUP : 定义物理卷空间分配
TABLE :
关系数据库的基本表
INDEX :
建立在TABLE上的索引
VIEW :
视图,建立在TABLE上的虚表
4 2020/4/30
TABLE/TABLE SPACES
应用程序调用 DB2 时使用的系统通讯 区,其中的返回代码域可以用来判断 SQL调用是否成功。常用的返回代码域 有: SQLCODE(INTEGER) –调用执行返回代 码(000-成功;<0-调用失败,例如:-530 New foreign key value is invalid ; >0-调用 警告,例如:+100 Row not found); SQLSTATE –调用返回代码详细说明。
INDEX1
INDEX2.etc.
VIEW1
VIEW2
VIEW3.etc
STORAGE GROUP1 VOLUME1 VOLUME2
STORAGE GROUP2 VOLUME3
3 2020/4/30
DB2 Objects 概述
CATALOG : DB系统定义信息
DIRECTORY : DB系统管理信息
//SYSUDUMP DD SYSOUT=*
//SYSIN DD *
MERGECOPY TABLESPACE NASEDB.NSPATEL COPYDDN(SYSCOPY1)
NEWCOPY YES
20 2020/4/30
在DB2的中,PAGE是最小的存储单元, 也是I/O的基本单位,大小为4K或32K;
TABLE中的一行(ROW)必须存放在 单个PAGE中,一个PAGE中可以存放多 个行(必须是同一个TABLE);
在资源管理中,Tablespaces, table, 或 page 都可以作为资源锁的单元;
5 2020/4/30
IMS Attach
2 2020/4/30
DB2 Object
DB2 SUBSYSTEM
CATALOG DIRECTORY OTHER SYSTEM OBJECTS
DATABASE 1 TABLE SPACES1
DATABASE2.etc. TABLE SPACES2
TABLE1
TABLE2. etc.
19 2020/4/30
DB2 online utility –MERGECOPY
MERGECOPY -建立(或合并)数据的完全拷贝(full image copies )或增量拷贝(incremental image copies);
//STEP1 EXEC DSNUPROC,PARM=‘FJDB,CPY1',COND=(4,LT),REGION=0M
//
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
主机变量(Host variables)
嵌入式语言中定义的变量,在SQL语句中可以使用,如 下例: EXEC SQL UPDATE TMPTABLE SET Salary = Salary * :PERCENT WHERE Jobcode = :JCODE END-EXEC. 使用时在变量前必须使用冒号(:)来标示主机变量。
6 2020/4/30
DB2 数据库的基本建立过程
建立存储组 ( Storage Group); 建立逻辑数据库 (DataBase); 定义表空间 (Tablespace); 建立表 (Table); 在表的基础上建立索引 (Index) ; 装载、处理数据 (LOAD/INSERT);
➢ UPDATE
SELECT
➢ DELETE
INSERT
DCL(Data Control Language):资源控制管理
➢ GRANT
REVOKE
8 2020/4/30
SQL 程序的预编译
DB2 的预编译(Pre-compile):
- 将SQL语句与非SQL语句分离; - 建立数据库访问模块(DBRM); - 检测语法错误;
使用“游标”(Cursors)来完成对记录 的处理。使用的语句包括:
DECLARE -声明一个游标
OPEN
-打开游标
FETCH
-读取游标中的一条记录
CLOSE CURSOR -关闭游标
14 2020/4/30
游标(CURSOR)使用例程
DEFINE A CURSOR
----- Definition
//
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),
EXEC SQL
DECLARE K9 CURSOR FOR
SELECT EMPNO,LASTNAME
FROM TEMP1
WHERE DEPNO = :DPT
END-EXEC.
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
EXEC SQL CLOSE K9 END-EXEC.
注意:游标操作在open时才对数据库中的table进行选择处 理。
15 2020/4/30
SQLCA-SQL Communication Area
//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=*
DB2/OS390
➢DB2 系统介绍 ➢DB2 编程 ➢DB2 的常用UTILITY
1 2020/4/30
DB2 系统架构示意
在OS/390系统中,DB2作为独立的数据库 应用系统,通过与其他应用间的接口 (ATTCHMENT)进行数据交换。
CICS Attach
DB2
TSO
Attach
OS/390
VALIDATE(BIND) ISOLATION(CS) EXPLAIN(YES) QUALIFIER(NASE001) OWNER(IBMUSER)
END
11 2020/4/30
DB2 的 SQL 编程
基本 SQL 语句:
SELECT
SELECT16 2020/4/30
Coding Aids
Whenever statement
用来处理可能出现的例外状况,在程序中一 旦定义全程使用。
EXEC SQL WHENEVER condition action END-EXEC.
Condition 包括: SQLERROR– SQLCODE 小于零; SQLWARNING – SQLCODE 大于零; NOT FOUND – SQLCODE = 100;
Source Program ..
EXEC SQL …
Language Interface
DB2 Pre-Compile
Source
DBRM SQL
STMNTS
DB2 CATALOG Table/Column Description Authorization SYSDBRM
Compile and Linkedit
Bind:
– 使用数据库的catalog信息 , 检测错误(资源 的授权、DB2的关系数据库规则);
– 对每一个SQL语句采取相应的调用策略(资 源锁、索引的使用);
– 将访问策略存储为plan(或是一个package); – Plan 由集成的一系列DBRMs组成。
9 2020/4/30
应用程序的编译以及运行过程
10 2020/4/30
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) -
相关主题