zoukankan      html  css  js  c++  java
  • DB2

    一、DB2 概述

    1. SPUFI (SQL Processor Using file input)

    主要需要了解实验上的一些操作

    参考: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 Overview

    clip_image004

    Buffer Pool

    DB2 has four kinds of page size for data buffers:

    clip_image006

    Types of Table Spaces

    • 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:

    Integer

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

    Smallint

        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

    二、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.
    

      

    三、DB2 embedded SQL working principle

     

    DBRM( Database Request Modules)

    packages:

    plans:

    需要注意的过程: precompile, compile, link, bind

    四、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官方学习网站,请勿随意转发。

  • 相关阅读:
    Android安全机制
    service不死之身
    图片加载机制比较
    handler机制面试
    SharedPreferences封装类
    文字太长自动缩小
    ANR
    onCreate源码分析
    线程池的启动策略
    Oauth认证协议
  • 原文地址:https://www.cnblogs.com/7explore-share/p/4956430.html
Copyright © 2011-2022 走看看