DBA 與開發日常高頻使用的 Oracle 命令、SQL*Plus 環境設置、核心函數、事務控制語句,濃縮為桌面速查卡,查閱即用。
SET LINESIZE 500 -- 行寬,防換行截斷
SET PAGESIZE 100 -- 頁長,控制標題重複頻率
/ 或 RUN 或 R -- 重新執行上一條 SQL
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD'; -- 當前會話生效
-- 默認格式:'DD-MON-RR' (如 01-JAN-23)
INSERT INTO scott.emp(empno, ename, sal)
VALUES (&emp_id, '&emp_name', &emp_sal);
-- 執行時提示輸入 emp_id, emp_name, emp_sal
-- 同一語句可反復執行(輸入 / 回車)
INSERT INTO managers (id, name, salary, hiredate)
SELECT empno, ename, sal, hiredate
FROM emp
WHERE job = 'MANAGER';
COMMIT/ROLLBACK 顯式結束。SAVEPOINT sp_name; 設置保存點 → ROLLBACK TO sp_name; 部分回滾。||(Oracle)vs +(SQL Server/MySQL CONCAT)%:任意長度字符;_:單個字符IS NULL 判斷空值| 分類 | 函數 | 示例/說明 |
|---|---|---|
| 字符 | LOWER/UPPER/INITCAP | 小寫/大寫/首字母大寫 |
| CONCAT(s1,s2) | 等價 s1 || s2 | |
| LENGTH(str) | 字符長度 | |
| SUBSTR(str, m, n) | 從第 m 位取 n 個字符 | |
| INSTR(str, substr) | 返回子串首次出現位置(1-based) | |
| LPAD/RPAD(str, len, pad) | 左/右填充至指定長度 | |
| REPLACE(str, from, to) | 替換所有匹配 | |
| 數值 | ROUND(n, [m]) | 四捨五入,m 為小數位(負數向左) |
| TRUNC(n, [m]) | 直接截斷,不四捨五入 | |
| MOD(m, n) | 取模 | |
| CEIL/FLOOR | 向上/向下取整 | |
| ABS | 絕對值 | |
| 日期 | SYSDATE | 當前日期時間 |
| ADD_MONTHS(d, n) | 加減月份 | |
| MONTHS_BETWEEN(d1, d2) | 月份差(可含小數) | |
| NEXT_DAY(d, 'weekday') | 下一個指定星期幾 | |
| LAST_DAY(d) | 該月最後一天 | |
| ROUND/TRUNC(date, 'fmt') | 日期四捨五入/截斷(MONTH/YEAR等) | |
| 轉換 | TO_CHAR(date/num, 'fmt') | 轉字符串,格式模板豐富 |
| TO_DATE(str, 'fmt') | 字符串轉日期 | |
| NVL(expr1, expr2) | expr1 為 NULL 返回 expr2 |
SELECT SYS_CONTEXT('USERENV', 'SESSION_USER') FROM dual; -- 當前用戶
SELECT SYS_CONTEXT('USERENV', 'LANGUAGE') FROM dual; -- 語言/字符集
SELECT SYS_CONTEXT('USERENV', 'DB_NAME') FROM dual; -- 數據庫名
SELECT SYS_CONTEXT('USERENV', 'TERMINAL') FROM dual; -- 客戶端終端