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

SQL 入門第一天:核心語句分類、SELECT 基礎、別名、連接、去重與過濾排序

     編輯:Oracle 教學

SQL 入門第一天:核心語句分類、SELECT 基礎、別名、連接、去重與過濾排序

SQL (Structured Query Language) 是關係型資料庫的標準語言。本章建立核心概念框架,掌握最基礎的查詢與過濾技巧。


一、SQL 三大語句類別

類別全稱核心指令用途
DMLData Manipulation LanguageSELECT, INSERT, UPDATE, DELETE, MERGE操作資料內容
DDLData Definition LanguageCREATE, ALTER, DROP, TRUNCATE, RENAME定義/修改資料庫結構
DCLData Control LanguageGRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT控制存取權限與事務

二、基本 SELECT 語句

SELECT [DISTINCT] {*, column1, column2, ...}
FROM table_name
[WHERE condition]
[ORDER BY column [ASC|DESC]];

1. 欄位別名

三種寫法等價,建議統一使用 AS 提升可讀性:

-- 1. 直接空格
SELECT last_name name, employee_id id FROM employees;

-- 2. 使用 AS (推薦)
SELECT last_name AS name, employee_id AS id FROM employees;

-- 3. 雙引號 (別名含空格/特殊字符/保留字時必須)
SELECT last_name AS "Employee Name", employee_id AS id FROM employees;

2. 字串連接運算子 ||

Oracle 使用 || 連接欄位與字面值,可「合成」輸出欄位:

SELECT last_name || '''s job_id is ' || job_id AS details FROM employees;
-- 輸出範例: King's job_id is AD_PRES

3. 去除重複行 DISTINCT

SELECT DISTINCT department_id FROM employees;
  • 作用於整個 SELECT 列表,非單一欄位。
  • NULL 值視為一種值,僅保留一筆。

4. 字面值規則

  • 字元與日期字面值**必須用單引號**括起:'John', '2024-01-01'。
  • 雙引號**僅用於別名** (含空格/大小寫敏感時)。
  • SQL 關鍵字不分大小寫;單引號內字串**嚴格區分大小寫**。

三、資料過濾 WHERE

常用比較與邏輯運算子

運算子說明範例
=, !=, <>, >, <, >=, <=基本比較salary > 5000
BETWEEN ... AND ...區間包含邊界salary BETWEEN 3000 AND 6000
IN (val1, val2, ...)離散值集合dept_id IN (10,20,30)
LIKE模糊比對last_name LIKE 'K%'
IS [NOT] NULL空值判斷commission_pct IS NULL
AND / OR / NOT邏輯組合dept_id=10 AND salary>5000

LIKE 萬用字元與跳脫字元

  • %:代表 0~n 個任意字元。
  • _:代表**單一**任意字元。
  • ESCAPE:自定義跳脫字元,查詢實際含 % 或 _ 的資料。
    WHERE last_name LIKE '%\_%' ESCAPE '\'  -- 查詢含底線的姓名
    

運算子優先順序 (高→低)

  1. 算術運算子 (+, -, *, /)
  2. 連接運算子 (||)
  3. 比較運算子 (=, <, >, ...)
  4. IS NULL, LIKE, IN
  5. BETWEEN
  6. NOT
  7. AND
  8. OR

使用括號 () 明確改變優先順序,提升可讀性。


四、結果排序 ORDER BY

SELECT last_name, salary
FROM employees
WHERE department_id = 90
ORDER BY salary DESC, last_name ASC;  -- 先按薪資降序,同薪資按姓名升序
  • ASC (預設):遞增/升序。
  • DESC:遞減/降序。
  • 可使用欄位別名、欄位位置 (如 ORDER BY 2 DESC) 或複合運算式排序。
  • NULL 排序:Oracle 預設 NULLS LAST (升序時) / NULLS FIRST (降序時),可顯式指定 ORDER BY col NULLS FIRST。

本章小結

掌握 DML/DDL/DCL 分類、SELECT 基礎結構、別名與連接、DISTINCT 去重、WHERE 多條件過濾 (含 LIKE/IN/BETWEEN/NULL)、運算子優先級、ORDER BY 多欄位排序。這是所有進階查詢的基石,請大量練習直至肌肉記憶。

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