在剛開始使用mysql的時候,剛開始是想要區分列名大小寫問題,在網上看到很多辦法,於是就
1、linux下mysql安裝完後是預設:區分表名的大小寫,不區分列名的大小寫;
2、2、用root帳號登入後,在/etc/my.cnf 中的[mysqld]後添加添加lower_case_table_names=1,重啟MYSQL服務,這時已設定成功:不區分表名的大小寫;
lower_case_table_names參數詳解:
lower_case_table_names = 0
其中 0:區分大小寫,1:不區分大小寫
MySQL在Linux下資料庫名、表名、列名、別名大小寫規則是這樣的:
1、資料庫名與表名是嚴格區分大小寫;
2、表的別名是嚴格區分大小寫;
3、列名與列的別名在所有的情況下均是忽略大小寫;
4、變數名也是嚴格區分大小寫;
MySQL在Windows下都不區分大小寫。
在my.ini 中的[mysqld]後添加添加lower_case_table_names=1,重啟MYSQL服務,這時已設定成功:不區分表名的大小寫;
lower_case_table_names參數詳解:
lower_case_table_names = 0
其中 0:區分大小寫,1:不區分大小寫
3、如果想在查詢時區分欄位值的大小寫,則:欄位值需要設定BINARY屬性,設定的方法有多種:
A、建立時設定:
CREATE TABLE T(
A VARCHAR(10) BINARY
);
B、使用alter修改:
ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45)BINARY;
C、mysql table editor中直接勾選BINARY項。
亂碼解決,更詳細的看下字元集設定這篇
在[mysqld] 下增加下句
default-character-set=utf8
但是經過本人的實踐之後如果按此方法修改後表名的區分大小寫指的是你建立一個表之後,它保留你建立時候的表名的原貌,但是在系統後台儲存的時候此表是不區分大小寫,也就是說在建立一個表名僅大小寫不一樣的表是不可以的。
例如;
在修改為表名區分大小寫之後,也就是 lower_case_table_names = 0 不管是在哪個系統下)在mysql命令列介面下輸入
CREATE TABLE TEST
Id int not null primary key,
Namevarchar not null
);
之後你執行show tables;
會包含一個TEST表,表名保留原來的大小寫,
你如果輸入show tables like ‘t%’;是查不到這個建立的表的;
之後你在建立另外一個表,
CREATE TABLE test
Id int not null primary key,
Namevarchar not null
);
系統會提示你,表test已經存在,不允許建立。