首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 基礎查詢教學:簡單查詢、限定查詢與排序實戰練習

     編輯:Oracle 資料庫相關知識

SQL 查詢是資料庫操作核心。本文從 DML/DDL/DCL 分類開始,系統講解 SELECT 列控制、WHERE 行過濾、運算子、模糊查詢、排序語法,附 9 題經典練習題與解析。

SQL 語言分類

  • DML:資料操作(SELECT、INSERT、UPDATE、DELETE)
  • DDL:定義物件(CREATE、ALTER、DROP)
  • DCL:權限控制(GRANT、REVOKE)

簡單查詢

-- 指定欄位
SELECT empno, ename, job, sal FROM emp;

-- 去重
SELECT DISTINCT job FROM emp;

-- 四則運算與常數輸出
SELECT empno, ename, (sal*15 + 300) income FROM emp;

-- 字串串接
SELECT empno || ename FROM emp;

限定查詢(WHERE 子句)

執行順序:FROM → WHERE → SELECT → ORDER BY
別名限制:SELECT 定義別名不可在 WHERE 使用

關係運算子

SELECT * FROM emp WHERE sal > 1500;
SELECT * FROM emp WHERE ename = 'SMITH';
SELECT empno, ename, job FROM emp WHERE job <> 'SALESMAN';

邏輯運算子

SELECT * FROM emp WHERE sal > 1500 AND sal < 3000;
SELECT * FROM emp WHERE sal > 2000 OR job = 'CLERK';
SELECT * FROM emp WHERE NOT sal >= 2000;

範圍查詢

SELECT * FROM emp WHERE sal BETWEEN 1500 AND 2000;
SELECT * FROM emp WHERE hiredate BETWEEN '01-1月-1981' AND '31-12月-1981';

空值判斷

SELECT * FROM emp WHERE comm IS NOT NULL;

IN 操作子

SELECT * FROM emp WHERE empno IN (7369, 7566, 7788, 9999);

陷阱:NOT IN 子查詢結果含 NULL 時,整體不回傳任何列

模糊查詢 (LIKE)

-- 以 A 開頭
SELECT * FROM emp WHERE ename LIKE 'A%';
-- 第二字元為 A
SELECT * FROM emp WHERE ename LIKE '_A%';
-- 任意位置含 A
SELECT * FROM emp WHERE ename LIKE '%A%';

排序 (ORDER BY)

-- 降序
SELECT * FROM emp ORDER BY sal DESC;
-- 別名排序
SELECT empno, ename, sal*12 income FROM emp ORDER BY income;
-- 多欄位:薪資降序、入職升序、職位
SELECT * FROM emp WHERE ename LIKE '%A%' ORDER BY sal DESC, hiredate ASC, job;

9 題基礎練習與解答

  1. 部門 30 所有員工:SELECT * FROM emp WHERE deptno=30;
  2. 所有辦事員姓名/編號/部門:SELECT ename,empno,deptno FROM emp WHERE job='CLERK';
  3. 傭金 > 薪資 60%:SELECT * FROM emp WHERE comm > sal*0.6;
  4. 部門 10 經理 + 部門 20 辦事員:SELECT * FROM emp WHERE (deptno=10 AND job='MANAGER') OR (deptno=20 AND job='CLERK');
  5. 擴展條件:... OR (job NOT IN ('MANAGER','CLERK') AND sal>=2000);
  6. 領傭金員工的不同職位:SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL;
  7. 無傭金或傭金<100:SELECT * FROM emp WHERE comm IS NULL OR comm < 100;
  8. 姓名不含 R:SELECT * FROM emp WHERE ename NOT LIKE '%R%';
  9. 含 A 姓名,薪資降序、入職升序、職位:SELECT * FROM emp WHERE ename LIKE '%A%' ORDER BY sal DESC, hiredate ASC, job;

核心觀念總結

  • WHERE 過濾列(行),SELECT 投影欄位(列)
  • NULL 代表未知,比較需用 IS NULL/IS NOT NULL
  • LIKE 配合 %(多字元)、_(單字元)
  • ORDER BY 最後執行,可使用 SELECT 別名

熟練這些基礎語法,是進階 SQL 優化與複雜報表開發的基石。

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