mysql字符集和比較規則

1 字符集和比較規則介紹

字符集: 字符的編碼規則
比較規則:字符集中字符比較大小的規則,一般是對字符串列進行排序,也叫排序規則

兩者關係:
一個字符集可以有許多比較規則,會有一個默認的比較規則;
而一個比較規則一定會對應一個字符集。

字符集和比較規則的使用說明:
1)字符集和比較規則有4個級別,分別爲:服務器、數據庫、表、字符串字段;
2)每個級別如果沒有設置字符集或者比較規則,則會用上一級別的字符集和比較規則;
例如:在建表的時候如果沒有指明字符集和比較規則, 會使用數據庫的字符集和比較規則。
3)只修改字符集,則比較規則會跟着一起變; 只修改比較規則,字符集會跟着一起變;

查看數據庫中字符集和比較規則的語句:

   show variables like '%character_set_database%';  查看數據庫字符集
   show variables like '%collation_database';       查看數據庫比較規則

2 客戶端和服務器字符集的交互

服務器接收到客戶端的請求數據後, 會經過3層編碼轉換,分別爲:

character_set_client      服務器接收請求的編碼
character_set_connection  服務器處理請求的編碼
character_set_results     服務器返回結果給客戶端的編碼

服務器會經過3種編碼的轉換,過程如下:
在這裏插入圖片描述

當客戶端的字符集和服務器的這3個字符集編碼不同時, 會解析不了數據, 一般都要求客戶端和服務器的編碼相同。

服務端設置3種客戶端編碼的命令爲:

SET  NAMES 字符集名;

這個命令等價下面3個命令的組合:

set character_set_client =       字符集名;
set character_set_connection  =  字符集名;
set character_set_results    =   字符集名;

客戶端設置服務端3種字符集的方法,可以在客戶端啓動的時候設置一個選項:
default-character-set=utf8 效果和把上面3個字符集一個一個設置是一樣的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章