字符集支持?
MySQL4.1以后的版本對字符集的支持具有以下新增功能:
-
支持服務(wù)器同時(shí)使用多種字符集。
-
允許在服務(wù)器,數(shù)據(jù)庫,數(shù)據(jù)表,數(shù)據(jù)列等多級別上設(shè)置不同的字符集。
-
服務(wù)器的默認(rèn)字符集在編譯時(shí)選定,但可在啟動(dòng)服務(wù)器時(shí)用--default-character-set選項(xiàng)來更改。
-
用ALTER DATABASE db_name DEFAULT CHARACTER SET charset來設(shè)置數(shù)據(jù)庫字符集。 如果只有default參數(shù),則使用服務(wù)器的字符集。
-
用CREATE TABLE table_name(...) CHARACTER SET = charset設(shè)置數(shù)據(jù)表字符集。如果charset為default,則使用數(shù)據(jù)表所在數(shù)據(jù)庫的字符集作為數(shù)據(jù)表的字符集。
-
在數(shù)據(jù)列中,可用CHARACTER SET charset屬性來設(shè)置數(shù)據(jù)列的字符集。charset不能是default,如果沒有該屬性,則默認(rèn)使用數(shù)據(jù)表的字符集。允許設(shè)置字符集的數(shù)據(jù)列有char,varchar(不帶binary屬性)及TEXT類型。
-
用_charset
str轉(zhuǎn)換字符串常數(shù)的字符集。如:_utf8 'mysql',_latinl
'oracle'。該方法只適用于括在引號內(nèi)的字符串,其它十六進(jìn)制常數(shù) 、字符串表達(dá)式等可用CONVERT()函數(shù)進(jìn)行轉(zhuǎn)換,如:SELECT
CONVERT( str USING charset)。
-
通過MySQL提供的函數(shù)可進(jìn)行字符集轉(zhuǎn)換和查詢。
-
新增的COLLATE操作符使我們可按某一種字符集的排序順序來處理另一種字符集的數(shù)據(jù)。如:SELECT a from t ORDER BY a COLLATE utf-8;
-
用SHOW CHARACTER SET命令可顯示服務(wù)器支持的字符集列表。
-
當(dāng)服務(wù)器轉(zhuǎn)換到另一種字符集時(shí),會自動(dòng)對索引進(jìn)行重新排序。
-
通過UTF-8和UCS2字符集提供了Unicode支持。
MySQL現(xiàn)在還不支持:1,在同一個(gè)字符串里混用不同字符集的字符;2,在同一個(gè)數(shù)據(jù)列里混用不同的字符集。
?
各級字符集的查詢方法
-
服務(wù)器級
SHOW CHARACTER SET;可查出可供使用的所有字符集。
SHOW VARIABLES LIKE 'character_set';可查出服務(wù)器的默認(rèn)字符集。
-
可查出數(shù)據(jù)庫級的字符集。
SHOW CREATE DATABASE db_name;
-
兩條命令可查出數(shù)據(jù)表的字符集。
SHOW CREATE TABLE table_name;
SHOW TABLE STATUS LIKE 'table_name'
-
以下幾命令可查出數(shù)據(jù)列的字符集:
DESCRIBE table_name;
SHOW COLUMNS FROM table_name;
SHOW CREATE TABLE table_name;
-
用CHARSET()函數(shù)可確定特定字符串,字符串表達(dá)式或數(shù)據(jù)列值相關(guān)聯(lián)的字符串的字符集。如:SELECT CHARSET(str)。