DB2

 

1、DB2 概述

1. SPUFI (SQL Processor Using file input)

主要須要瞭解實驗上的一些操做sql

參考:https://www-01.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/com.ibm.db2z10.doc.apsg/src/tpc/db2z_executesqlspufi.dita數據庫

clip_image002

2. DB2 data Structure & data Object

Data Structure Overviewbash

clip_image004

Buffer Poolide

DB2 has four kinds of page size for data buffers:學習

clip_image006

Types of Table Spacesfetch

  • Simple table spaces
  • Segmented table spaces
  • Partitioned table spaces
  • Universal table spaces
  • Large object table spaces (LOB)
  • XML table spaces

 

Data Type網站

clip_image008

datatype <——> cobol:

Integerspa

    bytes (5 if nullable) PIC S9(9) COMP3d

Smallintcode

    bytes (3 if nullable) PIC S9(4) COMP

Char( n )

     max. 254 bytes PICX( n )

 Varchar( n )

     max. 4046 bytes A structure containing structure containing PIC S9(4) COMP for length and PIC X( n ) for the data

Time

     3 bytes (4 if nullable) PICX(8) PIC X(8)

Date

     4bytes (5if nullable) 4 bytes (5 if nullable) PIC X(10)

null attribute

   default value.

DB2 Object map

clip_image010

 

3. DB2 Utilities

clip_image012

 

2、Program Structure

      ******************************************************************
      * Author:
      * Date:
      * Purpose:
      * Tectonics: cobc
      ******************************************************************
       IDENTIFICATION DIVISION.
      *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
       PROGRAM-ID. YOUR-PROGRAM-NAME.
       ENVIRONMENT DIVISION.
      *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
       DATA DIVISION.
       WORKING-STORAGE SECTION.
           EXEC SQL INCLUDE SQLCA END-EXEC
           EXEC SQL INCLUDE COPYBOOK-DEPTDL END-EXEC
      *-----------------------
       PROCEDURE DIVISION.
      *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
       MAIN-PROCEDURE.
            MOVE 'A00' TO DEPTNO.
            EXEC SQL
            SELECT DEPTNO,DEPTNAME,MGRNO
               INTO :DEPTNO,:DEPTNAME,:MGRNO
            FROM ST565.DEPT  WHERE DEPTNO=:DEPTNO
            END-EXEC.
            IF SQLCODE=0
                DISPLAY 'DEPTNO IS:'
                DISPLAY DEPTNO
                DISPLAY 'DEPTNAME IS:'
                DISPLAY DEPTNAME
                DISPLAY 'MGRNO IS:'
                DISPLAY MGRNO
            ELSE IF SQLCODE = 100
                DISPLAY 'NOT FOUND!'
            ELSE DISPLAY 'SQL ERROR'
            END-IF.
            STOP RUN.

  

3、DB2 embedded SQL working principle

 

DBRM( Database Request Modules)

packages:

plans:

 

須要注意的過程: precompile, compile, link, bind

 

 

4、Cursor

cursor operations: declare, open, fetch, close

declare:

EXEC SQL
            DECLARE cursor-name [NO SCROLL/SCROLL]
                                                  [DYNAMIC/STATIC]
            CURSOR         [WITH/ WITHOUT HOLD]
            FOR select-statement
            [FOR UPDATE OF columns-lists/ FOR FETCH ONLY]
END-EXEC.
View Code

 

open:

EXEC  SQL
            OPEN Cursor-name USING host-variables
END-EXEC.
View Code

 

fetch:

EXEC SQL
                FETCH Cursor-name
                INTO
                :Host-variable-col1,
                :Host-variable-col2,
                .
                .
                :Host-variable-coln
END-EXEC.
View Code

 

null indictor

If NULL indicator value =       -1 (NULL existed in the retrieved column)
                              =        0 (Retrieved column has the proper value)
                              =        2 (Truncated value retrieved)
View Code

 

close:

EXEC SQL
          CLOSE cursor-name
END-EXEC.
View Code

 

static cursor VS dynamic cursor

sensitive cursor VS insensitive cursor

 

 

加深理解:

1. 基本表和視圖之間的關係

基本表

是獨立存在的表,不是由其它的表導出的表

 

視圖

是一個虛擬的表,是從一個或幾個基本表導出的表;

它自己不獨立存在數據庫中,數據庫中只存放視圖的定義而不存放對應的數據;

當基本表中的數據發生變化時,從視圖中查詢出來的數據也隨之改變。

 

2. Table space有哪些類型,它們的聯繫和區別,SEGSIZE的含義是什麼

Simple table spaces

Segmented table spaces                

Partitioned table spaces

Universal table spaces

LOB (Large object table spaces)

Xml table spaces

 

SEGSIZE: Segmented Table spaces are divided into segments:

  • l  Each segment is dedicated to a table
  • l  Segment can consist of 4/8/16/32/64 pages
  • l  Segsize specified by creator

 

3. 靜態SQL和動態SQL的特色

Static SQL 通過程序的編譯後,在程序運行以前已經肯定下來。

1 EXEC SQL
2 
3            SELECT NAME, DEPT INTO :NAME, :DEPT
4 
5            FROM STAFF WHERE EMPNO = :EMPID
View Code

 

Dynamic SQL在程序運行的過程當中構造並執行。

EG:

1 strcpy(query, 「select tabname From syscat.table」);
2 
3            strcpy(query,」where tabname <>?);
4 
5            EXEC SQL PREPARE stmt From :query
View Code

 

Static sql:

  靜態SQL語句中要訪問的表名和列名是必須存在的;

  開銷較小;

  數據訪問計劃是在預編譯時候生成的.

 

Dynamic SQL:

         動態SQL語句結構在預編譯的時候是未知的,SQL的結構不固定,表和列可能隨時變化

         SQL語句存儲在某個變量中並在程序運行中被引用,更爲靈活

         數據訪問計劃在運行中生成

 

4. DB2經常使用的Utilities及它們各自的功能

見上文

 

5. 什麼是package、Plan, 它們的區別和聯繫

 

Bind Package(collection_id) Member(DBRM NAME| Package_id )

Bind Plan(plan_Name) Pklist(Package_Name1, Package_Name2..)

 

6. 敏感和不敏感遊標的區別,靜態遊標和動態遊標的區別

不敏感的遊標意味着在遊標打開後,不能看到其餘應用對基礎表的更改,不敏感的遊標是隻讀的,結果表中行的數量和內容在遊標打開的整個過程當中不變,不敏感的遊標不能用於數據更新和刪除。

敏感的遊標意味着在遊標打開後,能看到其餘應用對基礎表的所做的更改,結果表中行的數量(其餘應用插入或刪除)在遊標打開的整個過程當中不變,可是行的內容可變。敏感的遊標能因爲數據更新和刪除。

 

靜態遊標打開後,結果集的大小不變,結果集中行的數據順序也不變。

動態遊標打開後,結果集的大小可變,結果集中行的數據順序也可變,即其餘遊標能夠對結果集進行插入,更新或刪除操做。

 

7. 理解Multiple Rows Processing程序

程序示例:

 1 IDENTIFICATION DIVISION.
 2 PROGRAM-ID.    EXAMPLE.
 3 ENVIRONMENT    DIVISION.
 4 DATA           DIVISION.
 5 WORKING-STORAGE SECTION.
 6 01 WS-DEPT.
 7     10 WS-DEPTNO  PIC X(3) OCCURS 2 TIMES.
 8     10 WS-MGRNO   PIC X(6) OCCURS 2 TIMES.
 9     EXEC SQL INCLUDE SQLCA END-EXEC.
10 PROCEDURE      DIVISION.
11 PROC-START.
12     EXEC SQL 
13         DECLARE C1 SCROOL CURSOR 
14             WITH ROSET POSITIONING FOR
15             SELECT DEPTNO,MGRNO FROM DEPT
16     END-EXEC.
17     
18     EXEC SQL OPEN C1 END-EXEC.
19 
20     EXEC SQL 
21         FETCH FIRST ROWSET FROM C1 FOR 2 ROWS
22         INTO :WS-DEPTNO, :WS-MGRNO
23     END-EXEC.
24         IF SQLCODE = 0
25             DISPLAY 'EXECUTED SUCCESSFULLY!'
26             DISPLAY 'DEPTNO1 IS:'
27             DISPLAY WS-DEPTNO(1)
28             DISPLAY 'LOCATION1 IS:'
29             DISPLAY WS-MGRNO(1)
30             DISPLAY 'DEPTNO2 IS:'
31             DISPLAY WS-DEPTNO(2)
32             DISPLAY 'LOCATION2IS:'
33             DISPLAY WS-MGRNO(2)
34         ELSE IF SQLCODE= 100
35             DISPLAY 'SQL ERROR!'
36         END-IF.
37 
38     EXEC SQL CLOSE C1 END-EXEC.
39     STOP RUN.
View Code

 

8. DB2經常使用SQL語句

數據定義語言(DDL), 數據操做語言(DML), 數據控制語言(DCL)

1 CREATE STOGROUP STOUDB6
2 
3            VOLUMES (DAVP7C, DAVP8C, DAVP9E)
4 
5            PASSWORD UESTC;
View Code

 

 

1 ALTER STOGROUP STOUDB6
2 
3            ADD VOLUMES (DAVP9F, DAVP8C, DAVP9E)
4 
5            REMOVE VOLUMES (DAVP7C, DAVP8C)
6 
7            PASSWORD UESTC;
View Code

 

 

 

1 CREATE TABLESPADCE DSN8S91D IN DSN8D91A
2 
3 USING STOGROUP DSN8G910
4 
5 PRIQTY 52 SECQTY 20
6 
7 LOCKSIZE PAGE
8 
9 BUFFERPOOL BP1;
View Code

 

1 CREATE UNIQUE INDEX DSN8910.XDEPT ON
2 
3 DSN8910.DEPT (DEPTNO ASC)
4 
5 PADDED USING STOGROUP DSN8G910
6 
7 PRIQTY 512 SECQTY 64
8 
9 BUFFERPOOL BP1;
View Code

 

1  
2 ALTER TABLESPACE DSN8D91A.DSN8S91D
3 
4 BUFFERPOOL BP2 LOCKSIZE PAGE;
View Code

 

1 ALTER INDEX DSN8910.XPROJ1
2 
3 BUFFERPOOL BP1 COPY YES PIECESIZE;
View Code

 

1 CREATE TABLE BRANCH(
2 
3            BRAN_ID CHAR (10) NOT NULL,
4 
5            BRAN_NAME VARCHAR (20) NOT NULL,
6 
7            BRAN_STATUS CHAR(2) NOT NULL
8 
9 ) IN BANKDB.BANKTS;
View Code

 

1 ALTER TABLE BRANCH ADD CONSTRAINT PK_BRAND1
2 
3 PRIMARY KEY(BRAN_ID);
View Code

 

1 ALTER TABLE BRANCH
2 
3            ADD CONSTRAINT CK_BRANST1
4 
5            CHECK (BRAN_STATUS=’AC’  AND BRAN_STATUS=’EP’);
View Code

 

參考:

以上內容來自SCUT IBM 課程和IBM官方學習網站,請勿隨意轉發。

相關文章
相關標籤/搜索