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语句都有选项可以指定表字符集和排序规则: