SQL*Plus 是 Oracle 內建的命令列工具,掌握其核心指令、資料字典查詢與基本 SQL 撰寫,是 DBA 與開發者的基本功。本文整理 SQL*Plus 專屬指令、SQL 指令分類、資料字典視圖、常用查詢語法與格式化輸出技巧。
SQL*Plus 專屬指令 vs SQL 指令
| 類別 | 特徵 | 常用指令 |
| SQL 指令 | 以分號結尾、存入 SQL Buffer、可用 / 重跑 | SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, COMMIT, ROLLBACK, GRANT, REVOKE |
| SQL*Plus 指令 | 不存入 Buffer、無需分號、控制格式/環境/檔案 | DESC, SET, SHOW, SPOOL, START/@, EDIT, COLUMN, BREAK, COMPUTE, CONNECT, EXIT |
核心資料字典視圖
| 視圖 | 用途 | 範例 |
| TAB / USER_TABLES | 目前使用者的表/視圖/同義詞清單 | SELECT * FROM tab; |
| COL / USER_TAB_COLUMNS | 欄位定義清單 | DESC employees 或 SELECT * FROM user_tab_columns WHERE table_name='EMPLOYEES'; |
| USER_VIEWS | 視圖定義 | SELECT text FROM user_views WHERE view_name='EMP_VU'; |
| USER_INDEXES | 索引資訊 | SELECT index_name, uniqueness FROM user_indexes WHERE table_name='EMPLOYEES'; |
| USER_CONSTRAINTS | 限制條件 | SELECT constraint_name, constraint_type FROM user_constraints WHERE table_name='EMPLOYEES'; |
基本查詢語法速查
-- 全欄位
SELECT * FROM employees;
-- 指定欄位 + 別名
SELECT employee_id AS id, last_name AS name, salary
FROM employees;
-- 排序
SELECT * FROM departments ORDER BY department_id DESC;
-- 條件過濾
SELECT * FROM employees WHERE department_id = 10;
SELECT * FROM employees WHERE salary BETWEEN 5000 AND 10000;
SELECT * FROM employees WHERE last_name LIKE 'K%';
SELECT * FROM employees WHERE commission_pct IS NULL;
SELECT * FROM employees WHERE manager_id IN (100, 101, 102);
-- 邏輯運算子
WHERE dept_id = 10 AND salary > 5000
WHERE dept_id = 10 OR dept_id = 20
WHERE NOT (salary < 3000)
SQL*Plus 輸出格式化實戰
-- 欄位寬度、標題、對齊
COLUMN last_name HEADING 'Employee|Name' FORMAT A15
COLUMN salary JUSTIFY RIGHT FORMAT $99,999.99
COLUMN hire_date FORMAT A10 NULL 'Not Hired'
-- 分頁與行寬
SET PAGESIZE 100
SET LINESIZE 150
SET PAUSE ON -- 每頁暫停,按 Enter 翻頁
-- 隱藏標題
SET HEADING OFF
常用 SET 參數速查
| 參數 | 說明 | 預設值 |
| PAGESIZE | 每頁行數 | 14 |
| LINESIZE | 每行字元寬度 | 80 |
| LONG | LONG/CLOB 顯示長度 | 80 |
| FEEDBACK | 顯示「n rows selected」 | ON (6) |
| TIMING | 顯示執行時間 | OFF |
| AUTOTRACE | 顯示執行計畫與統計 | OFF |
新手避坑提醒
COMMIT/ROLLBACK 不需分號,且不存入 Buffer。
DESC 是 SQL*Plus 指令,非 SQL,無法在 PL/SQL 區塊中使用。
- 變數替代符
& 預設開啟,腳本中含 & 字元需 SET DEFINE OFF 或 SET SCAN OFF。
- 善用
SET AUTOTRACE TRACEONLY 分析執行計畫而不輸出結果集。
熟練 SQL*Plus 操作能大幅提升日常查詢、腳本除錯與效能分析效率,建議將常用 SET 與 COLUMN 設定寫入 glogin.sql 或 login.sql 自動載入。
- 上一篇文章: Oracle TO_CHAR 數值格式化:精確控制小數位、千分位與貨幣符號
- 下一篇文章: Oracle TO_CHAR 函式進階陷阱與最佳實務:數值、日期、SELECT INTO 與 ROWNUM 注意事項
Copyright ©
程式碼之家 All Rights Reserved