🔸1. 表名(Table Name)大小寫敏感性
| 作業系統 |
預設行為 |
說明 |
| Linux |
大小寫敏感 (lower_case_table_names=0) |
users ≠ Users |
| Windows |
大小寫不敏感 (lower_case_table_names=1) |
users = Users |
| macOS |
通常不敏感(視檔案系統) |
可能為 1 或 2,需確認設定 |
✅ 相關參數說明:
lower_case_table_names=0:保留原始大小寫,查詢時大小寫敏感(Linux 常見)
lower_case_table_names=1:強制轉小寫儲存,查詢時大小寫不敏感(Windows)
lower_case_table_names=2:保留原始大小寫儲存,查詢時大小寫不敏感(某些 macOS)
📌 查詢 lower_case_table_names 設定值
1
| SHOW VARIABLES LIKE 'lower_case_table_names';
|
🔍 查詢結果說明:
| Variable_name |
Value |
lower_case_table_names |
0 / 1 / 2 |
🔸對應值解釋:
| 值 |
說明 |
| 0 |
表名大小寫敏感(Linux 常見) |
| 1 |
表名大小寫不敏感,所有表名儲存為小寫(Windows 常見) |
| 2 |
表名大小寫不敏感,但保留原始大小寫儲存(macOS 某些情況) |
🔸2. 欄位名(Column Name)大小寫敏感性
- ✅ 欄位名稱在所有作業系統中預設都是大小寫 不敏感
- 範例:
SELECT name 與 SELECT NAME 等價
🔸3. 別名(Alias)大小寫敏感性
- ✅ SQL 查詢中的別名(例如
AS Name)通常不敏感
- ❗ 但應用程式端讀取資料時,有時會區分大小寫
🔸4. 資料值(Data Values)大小寫敏感性
| 資料型別 |
預設大小寫敏感性 |
CHAR, VARCHAR, TEXT |
❌ 視 Collation 而定 |
BINARY, VARBINARY |
✅ 大小寫敏感 |
✅ Collation 決定是否敏感:
utf8mb4_general_ci → ci = case-insensitive(不敏感)
utf8mb4_bin → bin = binary(大小寫敏感)
utf8mb4_general_ci 跟 utf8mb4_0900_ai_ci 差異?
✅ Collation 名稱結構說明
| 名稱部分 |
說明 |
utf8mb4 |
使用 UTF-8 編碼,可支援完整 Unicode(含 Emoji) |
general / 0900 |
指排序與比較邏輯 |
ci |
Case-insensitive(不區分大小寫) |
ai |
Accent-insensitive(不區分重音,例如 é = e) |
🔍 差異總覽
| 特性 |
utf8mb4_general_ci |
utf8mb4_0900_ai_ci |
| 發佈版本 |
MySQL 5.x 以前就有 |
✅ MySQL 8.0 新增 |
| 語言支援準確度 |
❌ 基本排序,略為不準確 |
✅ 更符合 Unicode 標準 |
| 重音符區分 |
❌ 不支援 AI,不精準 |
✅ 支援 AI,可分辨 e vs é(若使用 _as_ci) |
| Unicode 規則相容 |
❌ 不完全相容 |
✅ 遵循 Unicode Collation Algorithm (UCA) 9.0 |
| 效能 |
✅ 較快(因為簡單) |
❌ 較慢(但差異通常不大) |
| 建議用途 |
舊系統 / 無特別語言需求 |
🔥 新系統 / 精準排序需求(推薦) |
✅ 建議使用情境
| 情境 |
推薦 Collation |
| 新專案、MySQL 8 以上 |
utf8mb4_0900_ai_ci ✅ |
| 舊系統升級 |
utf8mb4_general_ci ✅ |
✨ 範例比較
| 比較項目 |
utf8mb4_general_ci |
utf8mb4_0900_ai_ci |
'a' = 'A' |
✅ 是 |
✅ 是 |
'e' = 'é' |
✅ 是 |
✅ 是(ai) |
'e' = 'é' (as_ci) |
❌ 否 |
❌ 否(可指定 accent sensitive) |
📌 查詢資料表或欄位的 Collation
1 2 3 4 5
| SHOW FULL COLUMNS FROM your_table;
SHOW TABLE STATUS WHERE Name = 'your_table';
|
👉 如果你希望排序更準確,支援更多語言與特殊符號比對(如德文 ß、西班牙 ñ),建議使用 utf8mb4_0900_ai_ci。
✅ 總結表
| 項目 |
是否大小寫敏感 |
備註 |
| 表名 |
依作業系統與設定 |
Linux 敏感、Windows 不敏感 |
| 欄位名 |
❌ 不敏感 |
預設不區分大小寫 |
| 資料值 |
視 Collation 而定 |
*_ci 不敏感,*_bin 敏感 |