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

Oracle 基礎查詢語法速查:SELECT、WHERE、LIKE、IN、NULL、邏輯運算

     編輯:Oracle 教學

Oracle 基礎查詢語法速查:SELECT、WHERE、LIKE、IN、NULL、邏輯運算

整理 Oracle 最常用的基礎查詢語法與範例,適合初學者速查、資深開發者備忘。

1. 查詢所有欄位 / 指定欄位


SELECT * FROM emp;
SELECT ename, sal, job FROM emp;

2. 查看表結構


DESC emp;
-- 或
SELECT column_name, data_type, data_length, nullable
FROM user_tab_columns
WHERE table_name = 'EMP';

3. WHERE 條件過濾


-- 比較運算子
SELECT * FROM emp WHERE sal > 2000;
-- 日期比較 (需轉換格式)
SELECT * FROM emp WHERE TO_CHAR(hiredate,'YYYY-MM-DD') > '1982-01-01';
SELECT * FROM emp WHERE TO_CHAR(hiredate,'YYYY') = '1980';
SELECT * FROM emp WHERE TO_CHAR(hiredate,'MM') = '04';

-- BETWEEN 範圍
SELECT * FROM emp WHERE sal BETWEEN 2000 AND 2500;
-- 等同於 sal >= 2000 AND sal <= 2500

4. 模糊查詢 LIKE


-- % 任意 0~N 個字元,_ 單一字元
SELECT ename, sal FROM emp WHERE ename LIKE 'S%';       -- S 開頭
SELECT ename, sal FROM emp WHERE ename LIKE '__O%';     -- 第 3 字元為 O
SELECT ename, sal FROM emp WHERE ename LIKE '%\_%' ESCAPE '\'; -- 包含底線

5. IN / NOT IN 列表匹配


SELECT * FROM emp WHERE empno IN (123, 345, 678);
-- 等同於 empno=123 OR empno=345 OR empno=678

6. 空值判斷 IS NULL / IS NOT NULL


SELECT * FROM emp WHERE comm IS NULL;
SELECT * FROM emp WHERE comm IS NOT NULL;

7. 邏輯運算子 AND / OR / NOT 優先級


-- AND 優先於 OR,建議用括號明確
SELECT * FROM emp
WHERE (sal > 500 OR job = 'MANAGER')
  AND ename LIKE 'J%';

8. 常用資料字典查詢


-- 當前用戶所有表
SELECT table_name FROM user_tables;
-- 所有可存取表
SELECT table_name FROM all_tables;
-- 含系統表 (需 DBA)
SELECT table_name FROM dba_tables;
-- 指定擁有者
SELECT table_name FROM dba_tables WHERE owner = 'SCOTT';

效能小提醒

  • WHERE 條件欄位上有索引時,避免對欄位使用函數 (TO_CHAR(hiredate)),改寫為範圍查詢 (hiredate >= DATE '1982-01-01') 以利用索引。
  • LIKE '%abc%' 導致全表掃描,若需前綴搜尋請用 LIKE 'abc%'。
  • IN 列表過長 (>1000) 會解析變慢,考慮用臨時表 JOIN 或 EXISTS。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved