MySQL修改表、字段、库的字符集及字符集

alt

一直对发型和身材不满意的人,有一个共同点:不肯承认这是脸的问题。

命令

修改数据库字符集

1
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];

把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:

1
2
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

只是修改表的默认字符集

1
2
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

修改字段的字符集

1
2
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;

查看字段编码

1
SHOW FULL COLUMNS FROM tbl_name;

查看系统的编码字符

1
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

MySQL字符集设置

系统变量:

1
2
3
4
5
6
7
– character_set_server:默认的内部操作字符集
– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
– character_set_database:当前选中数据库的默认字符集
– character_set_system:系统元数据(字段名等)字符集
– 还有以collation_开头的同上面对应的变量,用来描述字符序。

用introducer指定文本字符串的字符集

格式为:

1
[_charset] ‘string’ [COLLATE collation]

例子:

1
2
3
SELECT _latin1 ‘string’;
• SELECT _utf8 ‘你好’ COLLATE utf8_general_ci;
– 由introducer修饰的文本字符串在请求过程中不经过多余的转码,直接转换为内部字符集处理。

MySQL中的字符集转换过程

  1. MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
  2. 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:
    • 使用每个数据字段的CHARACTER SET设定值;
    • 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
    • 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
    • 若上述值不存在,则使用character_set_server设定值。
  3. 将操作结果从内部操作字符集转换为character_set_results
-------------本文结束感谢您的阅读-------------

本文标题:MySQL修改表、字段、库的字符集及字符集

文章作者:Wang Jiemin

发布时间:2019年04月22日 - 13:04

最后更新:2019年04月22日 - 14:04

原始链接:https://jiemin.wang/2019/04/22/mysql-character/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%