1.character_set_server和collation_server 這兩個變量是服務器的字符集。在系統啟動的時候可以通過--character-set-server和--collation-server來設置它們。如果沒有的話系統會把這兩各變量設置成默認值latin1和latin1_swedish_ci。默認值是編譯在程序中的,只能通過重新編譯來改變。
這兩個變量只用來為create database命令提供默認值。
2.character_set_database和collation_database
這兩個變量是當前數據庫的字符集。create database命令有兩個參數可以用來設置數據庫的字符集和比較規則。數據庫建立會在數據庫目錄下的db.opt文件中記錄數據庫的選項,數據庫的字符集設置也記錄在裡面。當我們用use改變當前數據庫時,mysql會讀數據庫db.opt文件來設置這兩個變量。當沒有當前數據庫的時候這兩個變量等於character_set_server和collation_server。
這兩個變量只用來為create table命令提供默認值。
3.character_set_client
這個變量用來決定mysql怎麼解釋客戶端發到服務器的SQL命令文字。
4.character_set_connection和collation_connection 這兩個變量用來決定mysql怎麼處理客戶端發來的SQL命令。mysql會把SQL命令文字從character_set_client編碼轉到character_set_connection然後再執行。collation_connection在比較SQL中的直接量時使用。
5.character_set_results 當SQL有結果返回的時候這個變量用來決定發給客戶端的結果中文字量的編碼。
還有幾個字符集概念沒有系統變量表示。
6.表的字符集 create table 的參數裡可以設置,為列的字符集提供默認值。
7.列的字符集
決定本列的文字數據的存儲編碼。列的比較規則比collation_connection高。也就是說mysql會把SQL中的文字直接量轉成列的字符集後再與列的文字數據比較。
8.character_set_system
這是元數據的字符集,數據庫,表和列的定義都是用的這個字符集。它有一個定值, 是utf-8