1)mysql5.1對字符集支援
1>使用多種字符集來儲存字串
2>使用多種校對規則來比較字串
3>在同一臺伺服器、同乙個資料庫或甚至在同乙個表中使用不同字符集或校對規則來混合字串
4>允許定義任何級別的字符集和校對規則
mysql伺服器能夠支援多種字符集
可以使用show character set語句列出可用的字符集:
mysql> show character set
2)字符集和校對規則有4個級別的預設設定:伺服器級、資料庫級、表級和連線級。
1>伺服器級
在伺服器級別,確定方法很簡單。當啟動mysqld時,根據使用的初始選項設定來確定伺服器字符集和 校對規則。 可以使用--default-character-set設定字符集,並且可以在字符集後面為校對規則新增--default-collation。 如果沒有指定乙個字符集,那就與--default-character-set=latin1相同。
當前的伺服器字符集和校對規則可以用作character_set_server和collation_server系統變數的值。在執行時能夠改變這些 變數的值。
2>資料庫級
每乙個資料庫有乙個資料庫字符集和乙個資料庫校對規則,它不能夠為空。
create database和alter database語句有乙個可選的子句來指定資料庫字符集和校對規則: create database db_name [[default] character set charset_name] [[default] collate collation_name]
alter database db_name [[default] character set charset_name] [[default] collate collation_name]
例如: create database db_name default character set latin1 collate latin1_swedish_ci;
mysql選擇資料庫字符集和資料庫校對規則:
1>如果指定了character set x和collate y,那麼採用字符集x和校對規則y。
2>如果指定了character set x而沒有指定collate y,那麼採用character set x和character set x的預設校對規則。
否則,採用伺服器字符集和伺服器校對規則。
3>表級
如果在create table語句中沒有指定表字符集和校對規則,則使用資料庫字符集和校對規則作為預設值。
每乙個表有乙個表字符集和乙個校對規則,它不能為空。 為指定表字符集和校對規則,create table 和alter table語句有乙個可選的子句:
create table tbl_name (column_list) [default character set charset_name [collate collation_name]]
alter table tbl_name [default character set charset_name] [collate collation_name] 例如:
create table t1 ( ... ) default character set latin1 collate latin1_danish_ci;
mysql選擇表字符集和 校對規則:
1>如果指定了character set x和collate y,那麼採用character set x和collate y。
2>如果指定了character set x而沒有指定collate y,那麼採用character set x和character set x的預設校對規則。 否則,使用資料庫字符集和校對規則作為預設值。
如果在列定義中沒有指定列字符集和校對規則,則預設使用表字符集和校對規則。
每乙個"字元"列(即,char、varchar或text型別的列)有乙個列字符集和乙個列校對規則,它不能為空。列定義語法有乙個可選子句來指
定列字符集和校對規則:
col_name (col_length) [character set charset_name [collate collation_name]] 例如:
create table table1 ( column1 varchar(5) character set latin1 collate latin1_german1_ci );
mysql選擇列字符集和校對規則:
1>如果指定了character set x和collate y,那麼採用character set x和collate y。
2>如果指定了character set x而沒有指定collate y,那麼採用character set x和character set x的預設校對規則。 否則,採用表字符集和伺服器校對規則。
示例1:表和列定義
create table t1 ( c1 char(10) character set latin1 collate latin1_german1_ci ) default character set latin2 collate latin2_bin;
在這裡我們有乙個列使用latin1字符集和latin1_german1_ci校對規則。是顯式的定義,因此簡單明瞭。需要注意的是,在乙個 latin2表中儲存乙個latin1列不會存在問題。
示例2:表和列定義
create table t1 ( c1 char(10) character set latin1 ) default character set latin1 collate latin1_danish_ci; 這次我們有乙個列使用latin1字符集和乙個預設校對規則。儘管它顯得自然,預設校對規則卻不是表級。相反,因為latin1的預設校對規則總
是latin1_swedish_ci,列c1有乙個校對規則latin1_swedish_ci(而不是latin1_danish_ci)。
示例3:表和列定義
create table t1 ( c1 char(10) ) default character set latin1 collate latin1_danish_ci;
我們有乙個列使用乙個預設字符集和乙個預設校對規則。在這種情況下,mysql查詢表級別來確定列字符集和 校對規則。因此,列c1的字符集是latin1,它的 校對規則是latin1_danish_ci。
示例4:資料庫、表和列定義
create database d1 default character set latin2 collate latin2_czech_ci; use d1; create table t1 ( c1 char(10) );
我們建立了乙個沒有指定字符集和校對規則的列。我們也沒有指定表級字符集和校對規則。在這種情況下,mysql查詢資料庫級的相關設定。(資料庫的設定變 為表的設定,其後變為列的設定。)因此,列c1的字符集為是latin2,它的 校對規則是latin2_czech_ci。
4>連線級 一些字符集和校對規則系統變數與客戶端和伺服器的互動有關。 伺服器字符集和校對規則表示為character_set_server和collation_server變數的值。 預設資料庫的字符集和校對規則表示為character_set_database和collation_database變數的值。 考慮什麼是乙個"連線":它是連線伺服器時所作的事情。客戶端傳送sql語句,例如查詢,通過連線傳送到伺服器。伺服器通過連線傳送 響應給客戶端,例如結果集。對於客戶端連線,這樣會導致一些關於連線的字符集和校對規則的問題,這些問題均能夠通過系統變數來解決. 1>當查詢離開客戶端後,在查詢中使用哪種字符集? 答:伺服器使用character_set_client變數作為客戶端傳送的查詢中使用的字符集。 2>伺服器接收到查詢後應該轉換為哪種字符集? 答:轉換時,伺服器使用character_set_connection和collation_connection系統變數。 它將客戶端傳送的查詢從character_set_client系統變數轉換到character_set_connection 3>伺服器傳送結果集或返回錯誤資訊到客戶端之前應該轉換為哪種字符集? 答:character_set_results變數指示伺服器返回查詢結果到客戶端使用的字符集。包括結果資料,例如列值和結果元資料(如列名)。 有兩個語句影響連線字符集: set names 'charset_name' set character set charset_name set names顯示客戶端傳送的sql語句中使用什麼字符集。 set names 'x'語句與這三個語句等價: mysql> set character_set_client = x; mysql> set character_set_results = x; mysql> set character_set_connection = x;
mysql支援gbk字符集
在檔案 my.ini 或my.cnf 中相應位置加入 default character set gbk client default character set gbk mysqld default character set gbk 修改結束以後,儲存,然後使用客戶端登入 mysql u roo...
mysql 字符集支援情況
mysql show character set 檢視字符集 任何乙個給定的字符集至少有乙個校對規則。它可能有幾個校對規則。mysql show collation like latin1 列出乙個字符集的校對規則 校對規則一般有這些特徵 兩個不同的字符集不能有相同的校對規則。每個字符集有乙個預設校...
mysql 集群字符集 Mysql 字符集
字符集與字元比較 字符集字符集是某種字元的集合,比如最常見的ascii碼,由127個字元組成,只需要乙個位元組就能表示 我們常說的字符集還是gbk iso utf8 mysql 我們使用得最多的字符集就是gbk 和 utf8了 他們都是變長字符集,如果字元在ascii範圍內就使用乙個位元組表示,其他...