前段時間做了資料表拆分,進行資料遷移,用到一些sql命令,語句記錄下來
db2look是db2用於生成資料庫ddl語句的乙個工具:
命令:db2look -d dbname -a -e -p -i userid -w password -o d:\sample.sql
db2look -d:資料名稱 -e:抽取複製資料庫所需ddl -t:生成指定表統計資訊 pjnl
引數比較多這邊就沒列舉,主要用到以上就可以查詢到ddl。
db2 系統表
目錄檢視
描述
查詢例項
syscat.checks
檢查約束包含一行記錄
select constname, tabname, text from syscat.checks
syscat.colchecks
檢查約束所引用的每一列包含一行記錄
select constname, tabname, colname, usage from syscat.colchecks
syscat.columns
指明一列是可為空(y)還是不可為空(n)
select tabname, colname, nulls from syscat.columns where nulls = 'n'
select sum(length) from syscat.columns where tabname='';檢視列大小
syscat.constdep
為某些其他物件上的約束的每個依賴性包含一行記錄
select constname, tabname, btype, bname from syscat.constdep
syscat.indexes
為每個索引包含一行記錄
select tabname, uniquerule, made_unique, system_required from syscat.indexes
syscat.keycoluse
檢視表主鍵
select constname, tabname, colname, colseq from syscat.keycoluse
syscat.references
為每個參照約束包含一行記錄
select constname, tabname, refkeyname, reftabname, colcount, deleterule, updaterule from syscat.references
syscat.tabconst
為每個惟一(u)主鍵(p)外來鍵(f)或表檢查(k)約束包含一行記錄
select constname, tabname, type from syscat.tabconst
syscat.tables
該錶的父表數目(該錶在其中充當子表的參照約束數目)
select tabname, parents from syscat.tables where parents > 0
syscat.tables
該錶的子表數目(該錶在其中充當父表的參照約束數目)
select tabname, children from syscat.tables where children > 0
syscat.tables
該錶的自引用參照約束數目(該錶在其中既充當父表又充當子表的參照約束數目)
select tabname, selfrefs from syscat.tables where selfrefs > 0
syscat.tables
在該錶上所定義的惟一約束(除了主鍵)的數目
select tabname, keyunique from syscat.tables where keyunique > 0
syscat.tables
在該錶上所定義的檢查約束的數目
select tabname, checkcount from syscat.tables where checkcount > 0
db2儲存過程建立
如果是在dbvisualizer工具建立需要這樣
--/create
procedure proc_jnl(in in_transdate date,in num integer
)language sql
p1:
begin
declare v_max_pjnl integer
;
declare v_min_pjnl integer
;
declare v_count integer
;
select
max(jnlno),min(jnlno) into v_max_pjnl,v_min_pjnl from pjnl_his where transdate >
in_transdate;
set v_count=
v_min_pjnl;
p2:
begin
while v_min_pjnl<=
v_max_pjnl do
set v_count=v_min_pjnl+num;--
每次進來檢查是否大於最大值
if v_min_pjnl > v_max_pjnl then
set v_count=v_max_pjnl+1;
endif
;
insert
into pjnl select
*from pjnl_his where jnlno >=v_min_pjnl and jnlno <
v_count;
commit
;
insert
into pjnldata select
*from pjnldata_his where jnlno >=v_min_pjnl and jnlno <
v_count;
commit
;
set v_min_pjnl=v_min_pjnl+
num;
endwhile
;
endp2;
end p1
/
執行方式:
call proc_jnl('2017-10-10',50000);
db2有五種約束:
建立 not null:
db2 "alter table tabname alter colname drop not null"
db2 "alter table t01 alter colname set not null"
建立、刪除唯一約束:
db2 "alter table tabname add unique(colname)"
db2 "alter table tabname drop unique constname "
建立主鍵約束:
db2 "alter table staff add primary key (id)"
建立外來鍵約束:
db2 alter table project add foreign key (respemp) references employee on delete cascade
表檢查約束:
db2 alter table employee add constraint phoneno_length check (length(rtrim(phoneno)) = 4)
db2儲存過程批量插入資料 db2儲存過程批量更新
db2儲存過程批量更新 雲伺服器 elastic compute service,簡稱ecs 是阿里雲提供的效能卓越 穩定可靠 彈性擴充套件的iaas infrastructure as a service 級別雲計算服務。雲伺服器ecs免去了您採購it硬體的前期準備,讓您像使用水 電 天然氣等公共...
db2儲存過程批量插入資料 db2儲存過程批量提交
db2儲存過程批量提交 雲伺服器 elastic compute service,簡稱ecs 是阿里雲提供的效能卓越 穩定可靠 彈性擴充套件的iaas infrastructure as a service 級別雲計算服務。雲伺服器ecs免去了您採購it硬體的前期準備,讓您像使用水 電 天然氣等公共...
DB2儲存過程雜談
db2常用的異常處理方式分為三種 undo 回滾 exit 退出 continue 繼續執行 declare undo exit continue handler for 異常處理的物件可以為針對指定的sqlstate declare undo exit continue handler for s...