一次偶然的機會,發如今登錄驗證時,改變用戶名的大小寫,一樣能夠登陸成功,這是因爲,當時使用的mysql數據庫對大小寫不敏感,查詢時老是能查詢到數據。一番查找資料,給出的緣由是:在建立數據庫的時候,選擇了utf8_general_ci排序規則。mysql
建立數據庫時,須要同時選擇字符集和排序規則,字符集你們都知道是怎麼回事,那排序規則幹嗎用的呢?sql
排序規則:是指對指定字符集下不一樣字符的比較規則。其特徵有如下幾點:
一、 兩個不一樣的字符集不能有相同的排序規則
二、 兩個字符集有一個默認的排序規則
三、 有一些經常使用的命名規則:如_ci結尾表示大小寫不敏感(caseinsensitive),_cs表示大小寫敏感(case sensitive),_bin表示二進制的比較(binary)。數據庫
我用的是5.6版本的mysql,對於這個版本是不支持utf8的cs排序規則,若是要想對大小寫敏感,可使用_bin的排序規則。blog
與此同時,可使用「show COLLATION;」查詢當前版本的數據庫支持的全部排序規則。使用 「show charset like 'utf8%';」進一步查看當前字符集的默認排序規則是什麼。排序
對於_ci的規則,表示不區分大小寫,如圖所示:ci
對於使用_bin排序規則的查詢以下:it
對於已經建立好的表,能夠是用以下命令進行修改(修改表結構的Collation屬性):io
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;登錄
上面着重色部分分別表示表名和列名。二進制