mysql> SHOW VARIABLES LIKE 'character_set_system';
+-----------------------+----------+
| Variable_name | Value |
+-----------------------+----------+
| character_set_system | utf8 |
+-----------------------+---------+
元數據的存儲使用Unicode并不意味著,服務器返回DESCRIBE函數的結果的列名時默認會使用character_set_system變量所設置的字符集。當你使用SELECT column1 FROM t命令時,服務器返回給客戶端的column1這個列名自身的字符集,是由系統變量character_set_results的值決定的,默認值是latin1:
mysql> SHOW VARIABLES LIKE 'character_set_results';
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'db_name';
數據庫字符集和排序規則影響服務器運行的這些方面:
對于CREATE TABLE語句,如果創建表時未顯式指定字符集和排序規則,數據庫字符集和排序規則被用做表的默認字符集和排序規則。要覆蓋該行為,顯式使用CHARACTER SET 和 COLLATE選項。 對于不包括CHARACTER SET選項的LOAD DATA語句,服務器使用變量character_set_database所指示的字符集來解析文件中的信息。要覆蓋該行為,顯式使用CHARACTER SET選項。 對于存儲的程序(過程和函數),在創建程序時如果字符數據參數(character data parameters)的聲明未使用CHARACTER SET 和 COLLATE選項,那么數據庫字符集和排序規則會用做字符數據參數的字符集和排序規則。要覆蓋該行為,顯式使用CHARACTER SET 和 COLLATE選項。 3、 每個表都有一個表字符集和表排序規則。CREATE TABLE 和 ALTER TABLE語句都有選項可以指定表字符集和排序規則: