一直对发型和身材不满意的人,有一个共同点:不肯承认这是脸的问题。
命令
修改数据库字符集
1 | ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...]; |
把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
1 | ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...] |
只是修改表的默认字符集
1 | ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...]; |
修改字段的字符集
1 | ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...]; |
查看字段编码
1 | SHOW FULL COLUMNS FROM tbl_name; |
查看系统的编码字符
1 | SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; |
MySQL字符集设置
系统变量:
1 | – character_set_server:默认的内部操作字符集 |
用introducer指定文本字符串的字符集
格式为:
1 | [_charset] ‘string’ [COLLATE collation] |
例子:
1 | SELECT _latin1 ‘string’; |
MySQL中的字符集转换过程
- MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
- 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:
- 使用每个数据字段的CHARACTER SET设定值;
- 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
- 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
- 若上述值不存在,则使用character_set_server设定值。
- 将操作结果从内部操作字符集转换为character_set_results