MySQL大小寫敏感總結

2021-10-10 05:04:32 字數 2145 閱讀 7047

​在mysql中,資料庫、表、triggers實際上都對應了datadir目錄(或子目錄)下的檔案,因此,這些物件的名字是否大小寫敏感主要是依賴於作業系統和檔案系統的,因此這些內容在windows中是大小寫是不敏感的,而在大多數類unix系統中是敏感的(mac os x除外),當然對於建立在這些類unix系統上的mysql,敏感性可以在一定程度上通過引數的修改來設定。

1、column(包括別名)、 index、routine和 event names在所有平台上大小寫都是不敏感的;

2、logfile groups名稱在所有平台上都是大小寫敏感的;

3、database、table(包括別名)的大小寫敏感性可以通過系統引數lower_case_table_names來配置(修改引數的值需要重啟資料庫);

lower_case_table_names =0(unix default):大小寫敏感,資料按照create 語句中的定義儲存在磁碟,且在查詢的時候是區分大小寫的;

注意:不要在大小寫不敏感的系統上使用此設定,因為容易導致像myisam引擎表的索引崩潰;

lower_case_table_names =1(windows default):大小寫不敏感,mysql將資料全部轉化為小寫形式儲存在磁碟上,而且在查詢的時候也是全部轉化為小寫進行比較;

lower_case_table_names =2(mac os x default):大小寫不敏感,大多數引擎是將資料按照create 語句中的定義儲存在磁碟上(innodb是小寫儲存),但是在查詢的時候全部轉化為小寫進行比較;這種設定僅適用於大小寫不敏感的作業系統;

4、trigger  identifiers的大小寫敏感性不受lower_case_table_names引數影響,在windows和mac os x上是不敏感的,在其他類unix系統上是不敏感的;

5、資料敏感性:由mysql的校對字符集規則來控制(collation),預設大小寫不敏感;

每乙個字元型column都有乙個「字符集屬性(character set)」和乙個「校對集屬性(collation set)」,其中character set影響列的儲存編碼,collation影響列資料的排序規則(或者說比較規則);

可以通過「show collation」命令檢視當前版本db支援的所有collation,其中「_ci」代表case-insensitive大小寫不敏感,「_cs」代表case-sensitive大小寫敏感,「_bin」的大小寫敏感依賴於character的二進位制編碼;

collation可以在資料庫物件(server、database、table、column)的定義中指定,也可以在sql語句中使用;可以通過「show variables like 'collation%'」檢視資料庫級別設定的各種collation規則,分為connection、database和server;

collation的宣告需要和字符集一一對應,例如utf8_general_ci不能和latin1同時使用;

例如有如下2條記錄,如果我們只想查詢小寫的'a'怎麼辦?

mysql  root@[test]>select * from t1 where name ='a';

+------+------+

| id   | name |

+------+------+

|    1 | a    |

|    2 | a    |

+------+------+ 可以在字段name前加個binary,使其區分大小寫:

mysql root@[test]>select * from t1 where binary name ='a';

+------+------+

| id   | name |

+------+------+

|    1 | a    |

+------+------+

如果不調引數,各種型別大小寫敏感如下:

型別敏感

不敏感database

MySQL大小寫敏感

mysql大小寫敏感的解決方案 注 關於lower case table names引數對錶名稱或資料庫名稱大小寫敏感的控制。unix下預設為0,也就是大小寫敏感的 windows下預設為1,不敏感 macos預設為2,儲存區分大小寫,但是在查詢時會轉換為小寫。對於在大小寫不敏感的系統 window...

Mysql區分大小寫(大小寫敏感)的問題總結

mysql預設是不區分大小寫的,但是在很多情況下需要大小敏感,以下總結了多種設定mysql大小寫敏感的方法。方法一 修改mysql server安裝目錄下的 my.ini 檔案,在mysqld節下加入下面一行 set variable lower case table names 0 0 大小寫敏感...

mysql 區分大小寫 大小寫敏感 配置

linux下mysql預設區分大小寫 windows下mysql預設不區分大小寫 檢視是否區分大小寫 lower case table names引數詳解 lower case table names 0 其中 0 區分大小寫,1 不區分大小寫 mysql在linux下資料庫名 表名 列名 別名大小...