62.笔记 MySQL学习——字符集相关的系统变量
Mysql有几个系统变量涉及字符集支持的各个方面。
Character_set_system 表示的是用于存储标识符的字符集。
Character_set_server和collation_server表示服务器的默认字符集和排序规则
Character_set_database和collation_database分别表示默认数据库的字符集和排序规则
Character_set_client表示客户端向客户端向服务器发送SQL语句时使用的字符集
Character_set_results表示的是服务器向客户端返回结果时使用的字符集
Character_set_connection是服务器使用的变量。当服务器接收到来自客户端的语句字符串时,会将该字符串从character_set_client转换为character_set_connection,并使用后者的字符集来处理该语句
Character_set_filesystem表示的是文件系统字符集。
查看
mysql> show variables like 'character\_set\_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+--------+
7 rows in set (0.01 sec)
mysql> show variables like 'collation\_%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection |utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
如果客户端想使用另一种字符集来与服务器进行通信,需要修改与通信有关的变量。想要使用utf8字符集,则需要更改3个变量。
mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)
也可以使用SET NAMES语句可以同样的效果。
例如
mysql> set names 'utf8';
Query OK, 0 rows affected (0.00 sec)
对于成对出现的变量,之间的影响关系如下:
设置字符集变量,会将相关排序规则变量设置为该新字符集默认的排序规则
设置排序规则变量的同时,会将相关的字符集变量设置为该新排序规则名的第一部分所暗示的那个字符集。