首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 大小寫敏感度完整規則:資料庫/表/欄位/別名/字串比較五大場景對照表

     編輯:MySQL 綜合教學

核心規則速查表

物件Linux/UnixWindows備註
資料庫名 / 表名嚴格區分大小寫不區分對應檔案系統目錄/檔案名
欄位名 / 欄位別名不區分不區分所有平台一致
表別名嚴格區分大小寫不區分查詢中引用必須一致
變數名嚴格區分區分用戶變數、系統變數、預存程序變數
字串比較 / LIKE預設不區分(依照排序規則)預設不區分可用 BINARY/排序規則強制區分

實際案例:會報錯的寫法

1. 同一查詢混用大小寫引用同一表

SELECT * FROM my_table WHERE MY_TABLE.col = 1;  -- Linux 下失敗

2. 表別名大小寫不一致

SELECT col_name FROM tbl_name AS a
WHERE a.col_name = 1 OR A.col_name = 2;  -- Linux 下失敗(a vs A)

字串比較深度解析

  • 預設排序規則(如 utf8_general_ci):ci = case-insensitive,'A' = 'a','E' = 'e'。
  • LIKE 比較:逐字元轉大寫比較,'E' = 'e'。
  • 強制區分大小寫三種方式:
    1. 欄位定義加 BINARY:col CHAR(10) BINARY
    2. 比較時用 BINARY 轉型:WHERE col = BINARY 'A'
    3. 用 STRCMP(col, 'A') = 0 或 col COLLATE utf8_bin = 'A'

示範:BINARY 關鍵字效果

SELECT 'E' = 'e', 'E' = BINARY 'e';
+-----------+------------------+
| 'E' = 'e' | 'E' = BINARY 'e' |
+-----------+------------------+
| 1         | 0                |
+-----------+------------------+

遷移最佳實踐

  1. 開發規範:統一使用小寫資料庫名、表名、欄位名。
  2. SQL 中以反引號包裹識別符:SELECT `col` FROM `table`。
  3. 跨平台部署前,設定 lower_case_table_names=1(Linux 需檔案系統支援)。
  4. 字串比較業務若需區分大小寫,明確指定 COLLATE utf8_bin 或 BINARY。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved