一、資料操作語言 (DML)
INSERT
-- 明確欄位
INSERT INTO tbl (col1, col2) VALUES (val1, val2);
-- 子查詢複製
INSERT INTO tbl (col1, col2) SELECT col1, col2 FROM other_tbl;
- 字串值用單引號
'GOOD DAY';單引號轉義寫兩個 ''。
- 日期可用
SYSDATE 或 TO_DATE('2001-08-01','YYYY-MM-DD')。
- 超過 4000 字元請用
CLOB + DBMS_LOB。
- 自增序列:
CREATE SEQUENCE seq_tbl INCREMENT BY 1 START WITH 1 MAXVALUE 999999 NOCACHE; 取值 seq_tbl.NEXTVAL。
DELETE / TRUNCATE
DELETE FROM tbl WHERE cond;
TRUNCATE TABLE tbl; -- 釋放空間、不可回滾、不觸發觸發器
UPDATE
UPDATE tbl SET col1=val1, col2=val2 WHERE cond;
- 未賦值欄位變
NULL,建議先非空檢核。
- 大量 DML 建議分批
COMMIT,避免回滾段爆滿。
二、資料定義語言 (DDL)
| 操作 | 語法範例 |
| 建表 | CREATE TABLE t (id NUMBER(6) PRIMARY KEY, name VARCHAR2(50) NOT NULL, dt DATE DEFAULT SYSDATE); |
| 改表名 | ALTER TABLE old RENAME TO new; |
| 加欄位 | ALTER TABLE t ADD (col3 NUMBER); |
| 改欄位 | ALTER TABLE t MODIFY (col3 NUMBER(10,2)); |
| 加主鍵 | ALTER TABLE t ADD CONSTRAINT pk_t PRIMARY KEY (id); |
| 加唯一 | ALTER TABLE t ADD CONSTRAINT uk_t_name UNIQUE (name); |
| 緩存控制 | ALTER TABLE t CACHE | NOCACHE; |
| 刪表含約束 | DROP TABLE t CASCADE CONSTRAINTS; |
| 清空表 | TRUNCATE TABLE t; |
三、查詢語句 (SELECT) 精華
- 常用函數:
NVL(expr1,expr2)、DECODE(a,v1,r1,v2,r2,...,default)、LPAD(str,n,pad)、TO_CHAR(dt,'YYYY-MM-DD HH24:MI:SS')。
- 集合運算:
UNION(去重)、UNION ALL、MINUS、INTERSECT。
- 分組:
GROUP BY col HAVING cond。
- 外連接:
WHERE t1.col = t2.col(+) → 推薦改用 LEFT JOIN t2 ON t1.col = t2.col。
- 模糊查詢:
INSTR(col,'str')>0 或 col LIKE '%str%'。
- ROWID:每列隱含唯一物理地址,可用於快速定位/去重。
四、常用 Schema 物件
| 物件 | 建立語法 | 備註 |
| 索引 | CREATE INDEX idx_t_col ON t(col); ALTER INDEX idx_t_col REBUILD; | 單表 ≤3 個單欄索引為宜;組合索引依查詢條件順序建立 |
| 視圖 | CREATE VIEW v AS SELECT ...; ALTER VIEW v COMPILE; | 僅儲存查詢文本,簡化複雜關聯 |
| 同義詞 | CREATE SYNONYM syn FOR t[@dblink]; | 隱藏物件真實位置,便於遷移 |
| DB Link | CREATE DATABASE LINK lnk CONNECT TO usr IDENTIFIED BY pwd USING 'tns_str'; | 跨庫查詢 SELECT * FROM t@lnk; |
五、權限控制 (DCL)
-- 系統權限
GRANT CONNECT, RESOURCE TO usr;
-- 物件權限
GRANT SELECT, INSERT, UPDATE ON t TO usr1, usr2;
-- 回收
REVOKE SELECT ON t FROM usr;
常用角色:CONNECT、RESOURCE、DBA。
實戰提醒
- 大量 DML 前評估影響行數,分批提交。
- 索引過多反拖慢寫入,定期
ANALYZE INDEX ... VALIDATE STRUCTURE 檢查使用率。
- 視圖嵌套增加解析開銷,必要時建立
MATERIALIZED VIEW。