SQL (Structured Query Language) 面向數據庫的通用處理語言,功能涵蓋:查詢提取、增刪改、對象定義、安全控制、完整性保護。
CREATE、ALTER、DROP、DECLARESELECT、DELETE、UPDATE、INSERTGRANT、REVOKE、COMMIT、ROLLBACK| 類型 | 說明 | 長度/精度 |
|---|---|---|
| CHAR(n) | 定長字符串 | 最大 254 |
| VARCHAR(n) | 變長字符串 | 最大 4000 |
| SMALLINT | 短整數 | 2 字節 |
| INTEGER | 整數 | 4 字節 |
| REAL | 單精度浮點 | 32 位近似值 |
| DOUBLE | 雙精度浮點 | 64 位近似值 |
| DECIMAL(m,n) | 精確數值 | 精度 m,小數位 n |
| DATE / TIME / TIMESTAMP | 日期/時間/時間戳 |
CREATE DATABASE db_name [USING CODESET codeset TERRITORY territory];
DROP DATABASE db_name;
註: 代碼頁選擇關鍵,創建時指定避免亂碼。
-- 新建
CREATE TABLE tab_name (
col1 type1 [NOT NULL] [PRIMARY KEY],
col2 type2 [NOT NULL], ...
);
-- 依現有表結構建表
CREATE TABLE tab_new LIKE tab_old;
CREATE TABLE tab_new AS SELECT col1,col2 FROM tab_old DEFINITION ONLY;
-- 修改表
ALTER TABLE tab_name ADD COLUMN col_name type; -- 僅支持增加列,不可刪列
ALTER TABLE tab_name ADD PRIMARY KEY (col);
ALTER TABLE tab_name DROP PRIMARY KEY;
-- 刪表
DROP TABLE tab_name;
鐵律: 列增加後不可刪除;DB2 中列類型不可變,唯一可擴展 VARCHAR 長度。
CREATE TABLESPACE tbs_name PAGESIZE 4K MANAGED BY DATABASE USING (FILE 'path' SIZE);
ALTER TABLESPACE tbs_name ADD (FILE 'path' SIZE); -- 不可逆,謹慎添加
DROP TABLESPACE tbs_name;
CREATE [UNIQUE] INDEX idx_name ON tab_name (col...);
DROP INDEX idx_name;
註: 索引不可修改,需重建。
CREATE VIEW view_name AS SELECT ...;
DROP VIEW view_name;
註: 僅能修改引用列範圍;基表刪除導致視圖失效。
事務特性: DML 不隱式提交,是否提交視環境設置而定。注意事務日志滿風險。
| 謂詞形式 | 可索引 | 備註 |
|---|---|---|
| col θ const (θ = >, >=, =, <=, <) | Y | <> 不可索引 |
| col BETWEEN c1 AND c2 | Y | 匹配列必須是索引最後一列 |
| col IN (list) | Y | 單列匹配 |
| col IS NULL | Y | |
| col LIKE 'xyz%' | Y | % 在後 |
| col LIKE '%xyz' | N | % 在前導致掃描 |
| col1 θ col2 | N | 同表列間比較 |
| col θ expression | N | 如 c1*(c1+1)/2 |
| pred1 AND pred2 | Y | 同屬同一索引列 |
| pred1 OR pred2 | N | 除 (c1=a OR c1=b) 可轉 IN |
| NOT pred | N | 含 NOT IN/BETWEEN/LIKE |
GROUP BY:選擇列除分組列/常量外必須用聚合函數;可用 MIN/MAX 等繞過限制。HAVING:分組後過濾。ORDER BY:指定返回行排序。DELETE FROM table WHERE condition;
INSERT INTO table (col1,col2) VALUES (v1,v2), (v1,v2)...; -- 多行值
UPDATE table SET col1=v1, col2=v2 WHERE condition; -- 較慢,相關列建索引
註: INSERT 不等待、不鎖定;UPDATE 較慢需索引支持。
GRANT [ALL PRIVILEGES | priv,...] ON table|view TO [PUBLIC | user,...];
REVOKE [ALL PRIVILEGES | priv,...] ON table|view FROM [PUBLIC | user,...];
COMMIT [WORK];
ROLLBACK [WORK];
註: 實例級用戶 (SYSADM/DBADM) 權限來自組成員身份,非 GRANT 授予,REVOKE 無效。
UNION [ALL]:合併結果,ALL 保留重複行。EXCEPT [ALL]:差集 (T1 - T2)。INTERSECT [ALL]:交集。前提:參與查詢列數、類型一致。LEFT OUTER JOIN:左表全保留 + 匹配行。RIGHT OUTER JOIN:右表全保留 + 匹配行。FULL OUTER JOIN:雙表全保留 + 匹配行。GROUPING SETS (col1, col2):單查詢多級分組。ROLLUP (col1, col2):層次化分組,順序敏感不可交換。CUBE (col1, col2):全組合分組。OVER (ORDER BY col ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING):移動窗口分析 (如移動平均)。DECIMAL、DOUBLE、INTEGER、SMALLINT、REAL → 數字;HEX(arg) → 16進制;CHAR、VARCHAR → 字符串;DIGITS(arg) → DECIMAL 字符串表示;DATE、TIME、TIMESTAMP → 日期時間。
YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND;DAYOFYEAR、DAYOFWEEK、DAYS(從 0001-01-01 起算天數)、MIDNIGHT_SECONDS、MONTHNAME、DAYNAME。
LENGTH、LCASE、UCASE、LTRIM、RTRIM;COALESCE(arg1,arg2...) 首個非 NULL;CONCAT、INSERT、LEFT、LOCATE、POSSTR、REPEAT、REPLACE、RIGHT、SPACE、SUBSTR。
ABS、COUNT、MAX、MIN、SUM;CEIL、FLOOR、MOD、RAND、POWER、ROUND、SIGN、TRUNCATE。
NULLIF(arg1,arg2):相等返回 NULL,否則返回 arg1。
掌握 DDL/DML/DCL 三大語句族、數據類型邊界、索引匹配規則、高級分組窗口、核心函數庫,即具備 DB2 開發運維的「內功心法」。實戰中配合 EXPLAIN、RUNSTATS、db2batch 持續優化,方臻化境。