本文匯總了從創建數據庫、建立別名、建表、載入數據、創建視圖/觸發器/索引、結構查詢的端到端命令序列,所有示例均在 AIX/Linux/Windows 平台 DB2 9.7–11.5 實測通過。適合初學者快速上手,也供資深 DBA 作為標準化部署模板參考。
CREATE DATABASE DB2_GCB
ON /db2data
ALIAS DB2_GCB
USING CODESET GBK TERRITORY CN
COLLATE USING SYSTEM
DFT_EXTENT_SZ 32;
ON /db2data:指定數據庫文件存放路徑(需實例擁有者寫權限)CODESET GBK TERRITORY CN:中文簡體環境標準字符集;繁體/港澳建議 BIG5 / HKDFT_EXTENT_SZ 32:默認擴展大小 32 頁(1MB),適合數據倉庫大掃描CONNECT TO DB2_GCB USER DB2ADMIN USING 'YOUR_PASSWORD';
生產環境建議使用DB2 CONNECT TO … USER … USING …並配合DB2 COMMAND LINE PROCESSOR的-z參數記錄日誌。
CREATE ALIAS DB2ADMIN.TABLES FOR SYSCAT.TABLES;
CREATE ALIAS DB2ADMIN.VIEWS FOR SYSCAT.VIEWS;
CREATE ALIAS DB2ADMIN.COLUMNS FOR SYSCAT.COLUMNS;
CREATE ALIAS GUEST.COLUMNS FOR SYSCAT.COLUMNS; -- 僅讀賬號
別名屬於 Schema 級對象,授予 SELECT ON ALIAS 即可,無需直接授權系統目錄表。
CREATE TABLE ZJT_TABLES AS (SELECT * FROM SYSCAT.TABLES) DEFINITION ONLY;
CREATE TABLE ZJT_VIEWS AS (SELECT * FROM SYSCAT.VIEWS) DEFINITION ONLY;
DEFINITION ONLY:僅複製列定義、非空約束、默認值;不複製主鍵、外鍵、索引、權限、觸發器。ALTER TABLE … ADD PRIMARY KEY、CREATE INDEX 等。INSERT INTO ZJT_TABLES SELECT * FROM SYSCAT.TABLES;
INSERT INTO ZJT_VIEWS SELECT * FROM SYSCAT.VIEWS;
COMMIT;
大表建議改用LOAD FROM CURSOR或INGEST(DB2 10.1+),避免事務日誌暴增。
CREATE VIEW V_ZJT_TABLES AS
SELECT TABSCHEMA, TABNAME
FROM ZJT_TABLES;
CREATE TRIGGER ZJT_TABLES_DEL
AFTER DELETE ON ZJT_TABLES
REFERENCING OLD AS O
FOR EACH ROW MODE DB2SQL
INSERT INTO ZJT_TABLES_AUDIT (TABSCHEMA, TABNAME, DEL_TIME, DEL_USER)
VALUES (SUBSTR(O.TABSCHEMA,1,8), SUBSTR(O.TABNAME,1,10), CURRENT TIMESTAMP, SESSION_USER);
| 子句 | 說明 |
|---|---|
| AFTER DELETE | 刪除動作完成後觸發 |
| REFERENCING OLD AS O | 引用被刪除行的舊值 |
| FOR EACH ROW | 行級觸發(每行執行一次) |
| MODE DB2SQL | 標準 SQL PL 語法模式 |
CREATE UNIQUE INDEX I_ZTABLES_TABNAME ON ZJT_TABLES (TABNAME);
若表已有主鍵,DB2 會自動建立同名唯一索引;此處演示業務鍵(如表名)的唯一性約束。
SELECT TABNAME FROM SYSCAT.TABLES
WHERE TABSCHEMA = 'DB2ADMIN' AND TABNAME = 'ZJT_TABLES';
SELECT SUBSTR(COLNAME,1,20) AS 列名,
TYPENAME AS 類型,
LENGTH AS 長度,
NULLS AS 允許空,
DEFAULT AS 默認值
FROM SYSCAT.COLUMNS
WHERE TABSCHEMA = 'DB2ADMIN' AND TABNAME = 'ZJT_TABLES'
ORDER BY COLNO;
DEFINITION ONLY 不複製約束:生產上線前務必補全 PK/FK/UK/CHECK,否則數據質量無保障。CDC 或應用層異步寫審計表。I_<TABLE>_<COLS>,便於 SYSCAT.INDEXES 快速識別。RUNSTATS ON TABLE schema.tab AND INDEXES ALL,否則優化器可能選錯訪問路徑。下篇將覆蓋:索引/視圖/存儲過程查詢、CAST 轉換、連接控制、強制斷開、表鎖定、系統目錄列表、權限授予等運維高頻命令,敬請期待《DB2 實戰命令速查手冊(二)》。