總結(jié)
MySQL在Linux下數(shù)據(jù)庫名、表名岗仑、列名匹耕、別名大小寫規(guī)則是這樣的:
1、數(shù)據(jù)庫名與表名是嚴(yán)格區(qū)分大小寫的荠雕;
2稳其、表的別名是嚴(yán)格區(qū)分大小寫的;
3炸卑、列名與列的別名在所有的情況下均是忽略大小寫的既鞠;
4、字段內(nèi)容默認(rèn)情況下是大小寫不敏感的盖文。
修改大小寫敏感
mysql中控制數(shù)據(jù)庫名和表名的大小寫敏感由參數(shù)lower_case_table_names控制嘱蛋,為0時表示區(qū)分大小寫,為1時五续,表示將名字轉(zhuǎn)化為小寫后存儲浑槽,不區(qū)分大小寫。
mysql> show variables like '%case%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
+------------------------+-------+
2 rows in set (0.00 sec)
修改cnf配置文件或者編譯的時候返帕,需要重啟服務(wù)。
MySQL存儲的字段是不區(qū)分大小寫的篙挽。這個有點不可思議荆萤。尤其是在用戶注冊的業(yè)務(wù)時候,會出現(xiàn)笑話铣卡。所以還是嚴(yán)格限制大小寫敏感比如好链韭。
如何避免字段內(nèi)容區(qū)分大小寫。就是要新增字段的校驗規(guī)則煮落。
可以看出默認(rèn)情況下字段內(nèi)容是不區(qū)分大小寫的敞峭。大小寫不敏感。
mysql> create table aa (a varchar(20) BINARY , c varchar(20)) ;
Query OK, 0 rows affected (0.10 sec)
mysql> show create table aa;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| aa | CREATE TABLE aa
(
a
varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
c
varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from aa;
+------+------+
| a | c |
+------+------+
| a | C |
| a | C |
| A | c |
+------+------+
3 rows in set (0.00 sec)
mysql> select * from aa where a = 'a';
+------+------+
| a | c |
+------+------+
| a | C |
| a | C |
+------+------+
2 rows in set (0.00 sec)
mysql> select * from aa where a = 'A';
+------+------+
| a | c |
+------+------+
| A | c |
+------+------+
1 row in set (0.00 sec)
原因如下:
字段值的大小寫由mysql的校對規(guī)則來控制蝉仇。提到校對規(guī)則旋讹,就不得不說字符集殖蚕。字符集是一套符號和編碼,校對規(guī)則是在字符集內(nèi)用于比較字符的一套規(guī)則 .
一般而言沉迹,校對規(guī)則以其相關(guān)的字符集名開始睦疫,通常包括一個語言名,并且以_ci(大小寫不敏感)鞭呕、_cs(大小寫敏感)或_bin(二元)結(jié)束 蛤育。比如 utf8字符集,utf8_general_ci,表示不區(qū)分大小寫葫松,這個是utf8字符集默認(rèn)的校對規(guī)則瓦糕;utf8_general_cs表示區(qū)分大小寫,utf8_bin表示二進(jìn)制比較腋么,同樣也區(qū)分大小寫 咕娄。
記錄下!