數據庫與連接
-- 創建支持中文的數據庫
CREATE DATABASE DB2_GCB ON G: ALIAS DB2_GCB
USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 32;
-- 連接/斷開
CONNECT TO sample1 USER db2admin USING password;
CONNECT RESET;
DISCONNECT DB2_GCB;
別名與視圖
CREATE ALIAS db2admin.tables FOR syscat.tables;
CREATE ALIAS db2admin.views FOR syscat.views;
CREATE ALIAS db2admin.columns FOR syscat.columns;
CREATE VIEW v_zjt_tables AS SELECT tabschema, tabname FROM zjt_tables;
表操作與數據加載
-- 結構複製
CREATE TABLE zjt_tables AS (SELECT * FROM tables) DEFINITION ONLY;
CREATE TABLE zjt_views AS (SELECT * FROM views) DEFINITION ONLY;
-- 數據複製
INSERT INTO zjt_tables SELECT * FROM tables;
INSERT INTO zjt_views SELECT * FROM views;
-- 觸發器示例
CREATE TRIGGER zjt_tables_del
AFTER DELETE ON zjt_tables
REFERENCING OLD AS O
FOR EACH ROW MODE DB2SQL
INSERT INTO zjt_tables1 VALUES (SUBSTR(O.tabschema,1,8), SUBSTR(O.tabname,1,10));
索引與約束
CREATE UNIQUE INDEX i_ztables_tabname ON zjt_tables(tabname);
常用系統查詢
| 目的 | SQL / 命令 |
| 查看表結構 | db2 describe table user1.department / db2 describe select * from user.tables |
| 查看索引 | db2 describe indexes for table user1.department |
| 列出所有用戶表 | LIST TABLES |
| 列出系統表 | LIST TABLES FOR SYSTEM |
| 查看活動數據庫 | LIST ACTIVE DATABASES |
| 查看表空間/容器 | LIST TABLESPACES / LIST TABLESPACE CONTAINERS FOR 1 |
| 查看授權 | GET AUTHORIZATIONS |
| 查看應用/強制斷開 | LIST APPLICATION / FORCE APPLICATION(0) / db2 force applications all |
| 鎖表 | LOCK TABLE test IN EXCLUSIVE MODE / SHARE MODE |
權限授予模板
-- 表/視圖
GRANT SELECT,DELETE,INSERT,UPDATE ON tables TO user;
GRANT ALL ON tables TO user WITH GRANT OPTION;
-- 套件
GRANT EXECUTE ON PACKAGE pkg_name TO PUBLIC;
-- 模式
GRANT CREATEIN ON SCHEMA schema_name TO user;
-- 數據庫級
GRANT CONNECT,CREATETAB,DBADM ON DATABASE TO user;
-- 索引
GRANT CONTROL ON INDEX idx_name TO user;
實用工具命令
db2sampl [drive:] 創建樣本庫
! dir 在 CLP 執行 OS 命令
? SQL30081 查錯誤碼說明
HELP SELECT 語法幫助
? 20000 SQLSTATE 幫助
db2admin setid user pwd 修改 DAS 口令
db2 update dbm cfg using JDK11_PATH d:\sqllib\java\jdk 配置 Java SP/UDF 路徑
db2 bind @db2ubind.lst / @db2cli.lst 升級後重綁系統包
數據類型速查
| 類型 | 長度/精度 | 示例/範圍 |
| CHAR(15) | 定長 254 | 'Sunny day ' |
| VARCHAR(15) | 變長 4000 | 'Sunny day' |
| SMALLINT | 2 字節 | -32768 ~ 32767 |
| INTEGER | 4 字節 | -2.147G ~ 2.147G |
| REAL | 單精度 32-bit | ±1.175E-37 ~ ±3.402E+38 |
| DOUBLE | 雙精度 64-bit | ±2.225E-307 ~ ±1.797E+308 |
| DECIMAL(5,2) | 精度5 模2 | -999.99 ~ 999.99 |
| DATE/TIME/TIMESTAMP | 3/3/7 部分 | 1991-10-27 / 13.30.05 / 1991-10-27-13.30.05.000000 |
| BLOB/CLOB/DBCLOB | 大對象 | 二進制/字符/雙字節字符 |
範式回顧
- 1NF:每列不可再分,無重複組。
- 2NF:非鍵列完全依賴主鍵(無部分依賴)。
- 3NF:非鍵列不傳遞依賴主鍵(無傳遞依賴)。
- 4NF:無多值依賴(一行不存兩個獨立多值事實)。
系統目錄視圖速查
SYSCAT.CHECKS -- 檢查約束
SYSCAT.COLUMNS -- 列定義
SYSCAT.KEYCOLUSE -- 鍵列使用
SYSCAT.DATATYPES -- 數據類型
SYSCAT.FUNCPARMS -- 函數參數
SYSCAT.REFERENCES -- 參考約束
SYSCAT.SCHEMATA -- 模式
SYSCAT.TABCONST -- 表約束
SYSCAT.TABLES -- 表/視圖
SYSCAT.TRIGGERS -- 觸發器
SYSCAT.FUNCTIONS -- UDF
SYSCAT.VIEWS -- 視圖