首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 基礎入門:SELECT 查詢、NULL 處理、NVL 函式與 SQL*Plus 格式化指令完整筆記

     編輯:Oracle 資料庫基礎

Oracle 入門必學核心:基本 SELECT 語法、NULL 語義與 NVL/NVL2/COALESCE 處理、SQL*Plus 環境設定與輸出格式化指令。本文整理為可直接複製實作的筆記,適合初學者快速上手與資深工程師查閱。

1. 基本 SELECT 語法


-- 全欄位
SELECT * FROM employees;

-- 指定欄位 + 別名 (AS 可省略)
SELECT employee_id AS id, last_name "Name", salary FROM employees;

-- 條件過濾
SELECT * FROM employees WHERE department_id = 10;
SELECT * FROM employees WHERE salary BETWEEN 5000 AND 10000;
SELECT * FROM employees WHERE last_name LIKE 'K%';      -- K 開頭
SELECT * FROM employees WHERE commission_pct IS NULL;  -- NULL 判斷
SELECT * FROM employees WHERE manager_id IN (100, 101, 102);

-- 排序
SELECT * FROM employees ORDER BY salary DESC, hire_date ASC;

2. NULL 處理核心函式

函式語法行為範例結果
NVLNVL(expr1, expr2)expr1 為 NULL 回傳 expr2,否則回傳 expr1NVL(comm, 0) → 0
NVL2NVL2(expr1, expr2, expr3)expr1 不為 NULL 回傳 expr2,NULL 回傳 expr3NVL2(comm, 'Y', 'N')
COALESCECOALESCE(e1, e2, e3...)回傳第一個非 NULL 運算式 (ANSI 標準、短路求值)COALESCE(comm, bonus, 0)
NULLIFNULLIF(e1, e2)e1=e2 回傳 NULL,否則回傳 e1NULLIF(salary, 0)

多條件模糊查詢技巧


-- 需求:部門代碼可選、職稱可選、薪資區間可選
SELECT * FROM employees
WHERE (dept_id = NVL(:p_dept, dept_id))
  AND (job_id = NVL(:p_job, job_id))
  AND (salary BETWEEN NVL(:p_min, salary) AND NVL(:p_max, salary));
-- 參數為 NULL 時條件自動失效,達到動態查詢效果

3. SQL*Plus 核心環境指令

指令功能範例
DESC / DESCRIBE顯示表結構DESC employees
SET PAGESIZE每頁行數SET PAGESIZE 100
SET LINESIZE每行寬度SET LINESIZE 150
SET PAUSE ON分頁暫停SET PAUSE ON
SET LONGLONG/CLOB 顯示長度SET LONG 20000
SET FEEDBACK顯示筆數SET FEEDBACK ON
SET AUTOTRACE執行計畫+統計SET AUTOTRACE TRACEONLY
SPOOL輸出至檔案SPOOL output.lst
@ / START執行腳本@script.sql
EDIT編輯緩衝區/檔案EDIT / EDIT script.sql

4. COLUMN 格式化指令 (輸出美化關鍵)


-- 字串欄位:寬度、標題、NULL 顯示
COLUMN last_name HEADING 'Employee|Name' FORMAT A15
COLUMN job_id FORMAT A10 NULL '(none)'

-- 數值欄位:千分位、貨幣、對齊
COLUMN salary JUSTIFY RIGHT FORMAT $99,999.99
COLUMN commission_pct FORMAT 9.99

-- 日期欄位:格式、NULL 顯示
COLUMN hire_date FORMAT A10 NULL 'Not Hired'

-- 清除格式
COLUMN last_name CLEAR

5. 判斷題自我檢測 (答案附後)

  1. SQL 指令永遠存放在 SQL Buffer 中。 (T)
  2. SQL*Plus 指令協助查詢資料。 (T) — 僅控制顯示格式與檔案,不存取資料庫。
  3. COMMIT 需要分號結尾。 (F) — 不需分號,不存入 Buffer。
  4. NVL(NULL, 'X') 回傳 'X'。 (T)
  5. WHERE col = NULL 可找出 NULL 值。 (F) — 必須 IS NULL。

快速參考卡


-- 登入
sqlplus user/pwd@sid
sqlplus / as sysdba

-- 基本查詢模板
SELECT col1, col2
FROM table
WHERE condition
ORDER BY col1;

-- NULL 安全比較
WHERE NVL(col, 'DEFAULT') = 'DEFAULT'
WHERE COALESCE(col1, col2, col3) IS NOT NULL

-- 格式化輸出模板
SET PAGESIZE 100 LINESIZE 150
COLUMN key_col FORMAT A20 HEADING 'Key|Column'
COLUMN num_col FORMAT 999,999.99 JUSTIFY RIGHT

熟練這些基礎語法與工具指令,是進階 SQL 調優、PL/SQL 開發、DBA 管理的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved