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