MySQL SQL 語句可分四大類,並在標準 SQL 基礎上大量擴展。理解分類脈絡、擴展動機、歷史缺失功能,有助於寫出高效、可移植、面向未來的 SQL。
| 類別 | 核心語句 | 說明 |
|---|---|---|
| 數據定義 (DDL) | CREATE/ALTER/DROP DATABASE/TABLE/INDEX/VIEW | 結構生命周期管理 |
| 數據操作 (DML) | INSERT/UPDATE/DELETE/REPLACE/LOAD DATA | 數據增刪改 |
| 數據查詢 (DQL) | SELECT/JOIN/UNION/子查詢 | 數據檢索與組合 |
| 數據控制 (DCL) | GRANT/REVOKE/SET PASSWORD | 權限與安全 |
附錄 D 提供完整語法參考;MySQL 參考手冊追蹤最新版本變更。
INSERT ... ON DUPLICATE KEY UPDATE:冪等寫入神器。REPLACE INTO:主鍵/唯一鍵衝突時刪舊插新。INSERT DELAYED:異步寫入(MyISAM/MEMORY)。LIMIT offset, count:分頁標準(標準 SQL 用 OFFSET ... FETCH)。SHOW / DESCRIBE / EXPLAIN:元數據與執行計劃可視化。/*! ... */ 版本註釋:跨庫兼容 Hint。AUTO_INCREMENT、ENGINE=...、CHARSET=... 等表選項。| 功能 | 標準 | MySQL 支持版本 | 早期繞過方案 |
|---|---|---|---|
| 子查詢 | SQL:1999 | 4.1 | JOIN / 臨時表 |
| 事務/Commit/Rollback | SQL:1992 | 3.23 (InnoDB) | LOCK TABLES + 相對更新 |
| 外鍵/引用完整性 | SQL:1999 | 3.23 (InnoDB) | 應用層檢查 + 觸發器 |
| 存儲過程/觸發器 | SQL:2003 | 5.0 | 客戶端封裝 / 中間層 |
| 視圖 | SQL:1999 | 5.0 | 應用層封裝查詢 |
MySQL 早期**主動不實現**複雜功能,換取:
1. 代碼庫精簡 → 穩定、少 Bug
2. 查詢路徑短 → 極致讀寫性能
3. 易於嵌入 → SQLite 風格的輕量部署
隨著硬件提升、用戶需求增長,MySQL 以**插件式存儲引擎**(InnoDB)為載體逐步補齊標準功能,核心仍保持輕量。
OFFSET/FETCH、MERGE、窗口函數),MySQL 8.0+ 已全面支持。LIMIT、ON DUPLICATE KEY)僅在性能敏感、確不遷移時使用。MyISAM 特有行為(COUNT(*) O(1)、全文索引舊版)。sql_mode(ANSI_QUOTES, STRICT_TRANS_TABLES)提升標準兼容性。