宿主变量。
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操作