SQL 語言功能繁多,依據操作對象與目的劃分為三大類,理解它們的差異對數據庫開發、權限管理、備份恢復策略至關重要。本文系統梳理三類語言的定義、核心命令與典型應用場景。
核心特徵: 操作數據庫結構(表、視圖、索引、用戶等),隱式提交事務,執行後無法回滾,刪除的數據不可恢復。
| 命令 | 功能 | 典型場景 |
|---|---|---|
| CREATE | 創建數據庫對象 | 建表、建視圖、建索引、建用戶 |
| ALTER | 修改對象結構 | 增減欄位、修改數據類型、調整約束 |
| DROP | 刪除對象 | 刪表、刪視圖、刪用戶(連同數據一併刪除) |
| TRUNCATE | 清空表數據並釋放空間 | 快速清理測試數據,比 DELETE 快且不記錄日志 |
| COMMENT | 添加數據字典註釋 | 文檔化表/欄位用途 |
| GRANT | 授予權限 | 給用戶分配 SELECT/INSERT/EXECUTE 權限 |
| REVOKE | 撤銷權限 | 收回不再需要的權限 |
核心特徵: 操作表中的具體數據行,不隱式提交,可在事務中回滾。
| 命令 | 功能 | 關鍵差異 |
|---|---|---|
| SELECT | 查詢數據 | 唯一不修改數據的 DML,常單獨歸類為 DQL |
| INSERT | 插入新行 | 可指定欄位或全列插入 |
| UPDATE | 修改現有行 | 務必加 WHERE 條件,否則全表更新 |
| DELETE | 刪除行但保留空間 | 可回滾,觸發器生效,可用 WHERE 過濾 |
| CALL | 調用存儲過程 | Oracle/PostgreSQL 常用 |
| EXPLAIN PLAN | 分析執行計劃 | 性能調優必備 |
| LOCK TABLE | 顯式鎖表控制併發 | 特殊場景使用,通常靠隔離級別隱式管理 |
核心特徵: 管理事務提交與回滾,控制事務邊界與一致性。
| 命令 | 功能 | 應用場景 |
|---|---|---|
| COMMIT | 提交事務,永久保存變更 | 業務邏輯成功完成時 |
| SAVEPOINT | 設置保存點 | 長事務中分階段回滾 |
| ROLLBACK | 回滾到上一 COMMIT 或 SAVEPOINT | 業務失敗、異常捕獲時 |
| SET TRANSACTION | 設置事務屬性 | 指定隔離級別、只讀/讀寫模式 |
| 維度 | DDL | DML | DCL |
|---|---|---|---|
| 操作對象 | 結構/元數據 | 數據行 | 事務邊界 |
| 隱式提交 | 是 | 否 | 視具體命令 |
| 可回滾 | 否 | 是 | ROLLBACK 本身即回滾 |
| 典型權限 | CREATE/DROP/ALTER | SELECT/INSERT/UPDATE/DELETE | 通常由 DBA 管理 |
TRUNCATE 或分批 DELETE,避免日志暴漲。BEGIN TRAN 包裹,異常時 ROLLBACK,成功時 COMMIT。