mysql區分大小寫問題


【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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM