SQL (Structured Query Language) 是關聯式資料庫管理系統 (RDBMS) 的標準語言。本文系統梳理 SQL 的功能分類、核心指令集與基本特性,建立完整知識地圖。
SQL 基本特性
- 宣告式語言:描述「要什麼」而非「怎麼做」,由優化器決定執行計畫
- 無程式控制結構:無迴圈 (while/for)、條件分支 (if-else)、自訂函數等程式語言特性
- 固定資料類型系統:無法像程式語言自訂類型
- 集合導向操作:以關聯代數為理論基礎,操作對象為關係 (資料表)
三大功能分類架構
| 分類 | 全名 | 中文 | 用途 | 核心指令 |
| DML | Data Manipulation Language | 資料操作語言 | 檢索、修改資料內容 | SELECT, INSERT, UPDATE, DELETE |
| DDL | Data Definition Language | 資料定義語言 | 定義資料庫結構/物件 | CREATE, ALTER, DROP, TRUNCATE |
| DCL | Data Control Language | 資料控制語言 | 權限、安全性、交易控制 | GRANT, REVOKE, COMMIT, ROLLBACK |
DML 詳細指令
| 指令 | 功能 | 典型語法 |
| SELECT | 查詢檢索 | SELECT col FROM table WHERE cond; |
| INSERT | 新增資料 | INSERT INTO table (col) VALUES (val); |
| UPDATE | 修改資料 | UPDATE table SET col=val WHERE cond; |
| DELETE | 刪除資料 | DELETE FROM table WHERE cond; |
DDL 詳細指令
| 指令 | 功能 | 說明 |
| CREATE TABLE | 建立資料表 | 定義欄位、型別、約束、索引 |
| ALTER TABLE | 修改表結構 | 增/刪/改欄位、約束、索引 |
| DROP TABLE | 刪除資料表 | 移除結構與資料,不可復原 |
| CREATE INDEX | 建立索引 | 提升查詢效能 |
| DROP INDEX | 刪除索引 | 釋放空間、維護效能 |
DCL 詳細指令
| 指令 | 功能 |
| GRANT | 授予權限 (SELECT, INSERT, EXECUTE 等) |
| REVOKE | 撤銷權限 |
| COMMIT | 確認交易 |
| ROLLBACK | 回滾交易 |
| CREATE SYNONYM | 建立同義詞 (簡化物件引用) |
直觀範例:查詢 CS 部門員工姓名
SELECT Employees.Name
FROM Employees
WHERE Employees.DeptID = 'CS';
解析:
FROM Employees:指定資料來源表格
WHERE Employees.DeptID = 'CS':過濾條件,僅保留部門代碼為 CS 的列
SELECT Employees.Name:投影輸出姓名欄位
主流 RDBMS 廠商與相容性
Oracle、Sybase、Microsoft SQL Server、Access、Ingres、PostgreSQL、MySQL、SQLite、MariaDB 等均支援核心 SQL 標準,但各有專有擴展 (如 T-SQL、PL/SQL、PL/pgSQL)。移植應用時需注意方言差異。
學習建議
- 先掌握標準 SQL 核心 (本文涵蓋範圍)
- 再深入目標資料庫的專有擴展與優化技巧
- 實務中善用資料庫工具 (SSMS、DataGrip、DBeaver 等) 提升效率