• DB2 学习笔记宿主变量、游标、 Drop、Create、Alter、锁、性能维护。


    宿主变量。
    exec sql
    update t1
    set c1=:newvalue
    where c1 = :oldvalue;

    Exec sql
    select lastname,firstname
    into :last,:fist
    from t1
    where empon=:id;

    游标得定义
    ________________
    Exec sql
     Declare c1 cursor for
     select c1,c2 from t1;
    Exec sql open c1;
    Exec sql fetch c1 into :id,:name
     ...
    Exec sql close c1;//光标得关闭,或游标得关闭

    处理异常情况
    SQLSTATE(ANSI标准代码)
    SQLCODE (DB2返回代码)
    可以在SQLCA中得到代码,成功为0
    SQLSTATE=2000表示没FETCH到,宿主变量值不变。

    游标--2 Scrollable cursors 可以上下滚动
    Exec sql declare cursor c1 scroll for ...;
    Exce sql open c1;
    Exce sql fetch last from c1 into ...;
    Exce sql fetch relative - 10 from c1 into ...;//倒数第十个开始。
    Exec sql fetch before from c1 into ....;
    Exec sql close c1;

    游标--3 Block fetch
    1、前提:cursor read only & application bind enabled blocking
    2、一次fetch多个,存在客户端的和buffer中。 


    DB2 UDB Everywhere  //Client
    DB2 UDB Satellite Edition //个人版的不完整版
    DB2 UDB Personal Edition //单机版
    DB2 UDB Workgroup Edition //网络版
    DB2 UDB Enterprise Edition //企业版,技术分布试数据库
    DB2 UDB Enterprise-Extended Edition
     MPP-massively parallel processor
    DB2 UDB OS/390  //大型机上用得.

    CREATE TABLE CITIES
    (
     CITY_ID CHAR(6) NOT NULL,
     CITY_NAME CHAR(12) NOT NULL,
     COUNTRY_CODE CHAR(6) NOT NULL,
     COUNTRY_NAME CHAR(30) DEFAULT 'UNKOWN',
     PRIMARY KEY(CITY_ID),
     FOREIGN KEY(COUNTRY_CODE) REFERENCES COUNTRY
    )

    //字段级和表级数据完整性
    CREATE TABLE T1--字段级数据完整性
    (
     C1 CHAR(1) CHECK (C1 IN('W','e')),--C1字段改选在W~e之间
     C2 INTEGER
    )
    CREATE TABLE T2 --表级数据完整性
    (
     C1 INTEGER,
     C2 INTEGER,
     Constraint con_1 check(c1 between 1 and
     10000 and c2>=1 and c2<=10000))
    )

    //增加规则
    Alter table t1
    add constraint con_2 check(....)
    对于OS/390:
    1、set current rules = 'STD'
    2、set current rules = 'DB2'
    对于DB2 UDB,自动检查以前数据

    //建立索引
    create index index_name on table_name
    (col_name,....)--可以在一个列中建索引,也可以在好几个列中建立索引
    建立索引的原因
    1、提高获取数据的速度
    2、确保唯一性
    3、聚集索引
    --索引可以有很多个,但聚集索引只能一个。

    //Drop
    Drop object_type object_name
    删除表是,与表相关的索引,视图一并删除。

    //锁
    锁反应的是数据库的并发性,锁的对象越小,并发程度越高。
    可以上锁的对象
    1、表 S、X。S-读操作,X-写操作,S锁与锁是可以共存在得,而S锁与X锁是不能进行共存。
    2、行 S、C、X。S-行读操作,C-行写操作,X-表写操作;
    3、同一条记录当中S锁与S锁是可以共存在,同一条记录S锁与X锁是不能共存的,同一表不同记录S锁与X锁、S锁与S锁是可以共存;
    4、在这个行加锁当之前对这个表上了一个IS锁,这个IS非常得弱。
    5、页(for os/390)
    6、表空间

    //Maintenance 系统维护(性能维护)
    1、Runstats
    2、Reorgchk
    3、Reorg
     一般reorg之后一定要运行runstas,以获得统计数据。
     统计数据被用来进行优化分析的,所以runstats之后常常要进行程序的rebind操作 

  • 相关阅读:
    初等数论初步——剩余类及其运算
    初等数论初步——同余的概念及性质
    救济金发放(模拟题打卡)
    寻找最小字典序字符串(水题打卡)
    杭电3790最短路径问题
    Android网络请求
    js制造运动的假象-------Day63
    数据切分——原理
    Android 开发中 iBeacon的使用
    HDU 4869 Turn the pokers (2014多校联合训练第一场1009) 解题报告(维护区间 + 组合数)
  • 原文地址:https://www.cnblogs.com/xiaotuni/p/2365758.html
Copyright © 2020-2023  润新知