校對規則:在當前編碼下,字元之間的比較順序。(cs大小寫敏感,ci大小寫不敏感,bin二進位編碼比較) 1. 查看當前校對規則 show collation; 每個字元集都支持不定數量的校對規則,下圖為查看結果的部分截圖: tip : 以big5_chinese_ci為例,其中big5表示字元集,c ...
校對規則:在當前編碼下,字元之間的比較順序。(cs大小寫敏感,ci大小寫不敏感,bin二進位編碼比較)
1. 查看當前校對規則 show collation;
每個字元集都支持不定數量的校對規則,下圖為查看結果的部分截圖:
tip : 以big5_chinese_ci為例,其中big5表示字元集,ci表示校對規則,即 “字元集_地區名_校對規則”;
校對規則是依賴字元集而存在的,在設置字元集時,可以設置當前字元集的校對規則。
如果不設置校對規則,字元集會使用預設的校對規則。
2. 查看某種特定字元集下的校對規則 show collation like 'pattern';
3. 以 gbk 為例,比較chinese_cin和bin之間的區別:
設置新表 tb3 的校對規則為gbk_chinese_ci,而tb4的校對規則為gbk_bin;
show create table tb_name;查看兩張表的創建信息:
由於gbk_chinese_ci是預設校對規則,所以在tb3的創建信息中,並不會寫出校對規則;
而tb4採用了非預設校對規則gbk_bin,右圖方框里顯示了對應的設置。
對兩張表插入相同的三條信息:
查看此時,tb3 和 tb4 中的數據:
發現兩表中的數據是按照插入的順序排列的。
此時若使用排序關鍵字order by對兩表的數據進行排序,由於二者的校對規則不同,排序結果可能不同:
(order by :可以在獲得數據時,將數據按照某個欄位進行排序)
tb3是gbk_chinese_ci,不區分大小寫,所以排序結果是a、B、c ;
tb4是gbk_bin,按編碼二進位逐位元組比較,a的ASC碼是97,B的ASC碼是 66 , c 的ASC碼是99,因此排序結果是 B、a、c ;
tip: 校對規則並不影響數據的保存,只是影響數據的排序;
字元集影響數據的保存。
常用的校對規則是gbk_chinese_ci。
4. 查看當前伺服器端字元集的設置 show variables;
若要查看character set相關的字元集設置,語句為 show variables like 'character_set%';
tip : client/connection/results是連接時所用到的編碼,
database表示當前所選擇的資料庫的字元集,用show create database db_name;檢驗: