【1】mysql 表的大小寫和字段的大小寫
數據庫存儲的varchar類型字符串查詢時不區分大小寫。
簡而言之: 通過 show variables like 'lower_case_table_names'
查看值, 0代表嚴格區分, 1代表不區分,
通過修改mysql的配置my.cnf
文件更改然后重啟,即可達到預期的效果。
【2】一些疑惑
(1)mysql 【表名】是否區分大小寫?
使用dushow Variables like '%table_names’查看 lower_case_table_names 的值,0代表區分,1代表不區分。
mysql對於表名的策略與 varchar 類型數據相同。
即:默認不區分大小寫,但如果該表是以“*_bin”編碼的話會使mysql對其區分大小寫。
(2)mysql 【字段名】是否區分大小寫?
mysql對於字段名的策略與 varchar 類型數據相同。
即:默認不區分大小寫,但如果該字段是以“*_bin”編碼的話會使mysql對其區分大小寫。
(3)mysql 【行內容】的是否區分大小寫?
mysql對於類型為 varchar 數據默認不區分大小寫,但如果該字段以“*_bin”編碼的話會使mysql對其區分大小寫。
如:列不顯示寫,就默認繼承了表的字符集和排序規則,表不顯示寫就繼承了數據庫的字符集與排序規則,庫不顯示寫,就繼承了配置文件(即實例級別)的字符集與排序規則
ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
(4)修改后,對現有表的影響?
如果現有表的字符集及排序規則與你要修改的不一樣或不兼容,那么你無法改變這個表的屬性;
比如:
本身有code字段,修改表的字符集為 utf8mb4_bin 后
再加CODE字段, utf8mb4_bin加不進去的;會報錯
【3】Linux 與 Windows 下的默認區別
注意:表和字段的編碼盡量繼承數據庫的編碼(不明顯指定即繼承),以免引起混亂。
LINUX下的MYSQL默認是要區分表名大小寫的 ,而在windows下表名不區分大小寫
讓MYSQL不區分表名大小寫的方法其實很簡單:
1.用ROOT登錄,修改/etc/my.cnf
2.在[mysqld]下加入一行:lower_case_table_names=1