MySQL 標識符命名規範:語法規則、長度上限、大小寫敏感性完全手冊
規範命名是可維護 Schema 的基石。MySQL 對標識符(庫、表、列、索引、別名)有嚴格語法與長度限制,大小寫敏感性受作業系統影響。
一、合法字符集
- 字母(a-z, A-Z)、數字(0-9)、下劃線(_)、美元符($)。
- **可用數字開頭**(如
123tbl),但**不能純數字**(避免與數值字面量混淆)。
- 避免使用
e/E 開頭的名稱(如 23e+14 歧義:列名還是科學計數法?)。
二、長度上限(字符數,非字節)
| 對象 | 最大長度 |
| 數據庫、表、列、索引 | 64 字符 |
| 別名 | 256 字符 |
三、限定符語法(命名空間解析)
| 引用層級 | 語法 | 示例 | 說明 |
| 數據庫 | db_name | mydb | 單純库名 |
| 表(完全限定) | db_name.tbl_name | mydb.users | 跨庫訪問必須 |
| 表(簡短) | tbl_name | users | 隱含當前默認庫(USE 設置) |
| 列(完全限定) | db_name.tbl_name.col_name | mydb.users.id | 多表同名列消歧 |
| 列(部分限定) | tbl_name.col_name | users.id | 單表查詢常用 |
| 列(無限定) | col_name | id | 單表且無歧義時 |
四、大小寫敏感性規則(核心避坑點)
| 對象 | 敏感性 | 決定因素 | 建議 |
| SQL 關鍵字/函數名 | **不敏感** | 解析器內部 | 統一大寫(SELECT)提升可讀性 |
| 數據庫/表名 | **取決於 OS** | 文件系統:Linux 區分,Windows 不區分 | **統一小寫**;避免 abc vs ABC 衝突 |
| 列/索引名 | **不敏感** | 解析器內部 | 統一小寫 |
| 別名 | **敏感** | 解析器內部 | 引用時**嚴格保持定義大小寫** |
五、同一查詢內大小寫一致性要求
- 數據庫、表、別名:同一查詢中所有引用**必須大小寫一致**。
- 關鍵字、函數、列名:允許混用(但強烈不建議)。
六、遷移兼容性清單
- 開發環境 Windows,生產 Linux → **全小寫命名**。
- 使用
lower_case_table_names=1 強制不敏感(需重啟,影響所有庫)。
- 導出腳本用
mysqldump --no-data 檢查實際大小寫。
- 上一篇文章: MySQL 數據庫創建、刪除與切換:權限、風險與最佳實踐
- 下一篇文章: MySQL SQL 語言特性分類與擴展:從 DDL 到缺失功能的演進視角
Copyright ©
程式碼之家 All Rights Reserved