MySQL字符集设置

选择合适的字符集

  • 满足应用支持语言的需求
  • 如果应用中设计已有数据的导入,需要考虑数据库字符集的兼容性
  • 如果只需要支持一般中文,数据量很大,性能要求也高,应该选择双自己定长编码的中文字符集。如GBK
  • 如果因公主要处理英文字符,仅有少量汉子数据,那么选择utf-8比较好
  • 如果数据库需要处理大量的字符运算,那么选择定长字符集会更好
  • 如果所有客户端都支持相同的字符集,优先选择该字符集

MySQL支持的字符集简介

# 查看所有可用的字符集
show character set;

# 显示所有的字符集和该字符集默认校对规则
desc information_schema.character_sets;

# 查看相关字符集的校对规则
show collation like 'gbk%';

# 示例
select case when 'A' collate gbk_chinese_ci = 'a' collate gbk_chinese_ci then 1 else 0 end;

校对规则命名约定:他们一起相关的字符集名开始,通常包括一个语言名,并以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元,即比较是基于字符编码的值而与language无关)结束。

MySQL字符集的设置

  • 服务器级
  • 数据库级
  • 表级
  • 字段级

服务器字符集和校对规则

  • 可以在my.cnf中设置

    [mysqld]
    character-set-server=gbk

  • 在启动选项中指定

    mysqld –character-set-server=gbk

  • 编译时指定

    cmake . -ddefault_charset=gbk

# 查询当前服务器的字符集和校对规则
show variables like 'character_set_server'

数据库字符集和校对规则

数据库的字符集和校对规则在创建数据库的时候指定,也可以在创建完数据库后通过”alter database”命令进行修改

注意:修改字符集并不能将已有的数据按照新的字符集进行存放
# 查看数据库字符集
show variables like 'character_set_database';

# 查看数据库校对规则
show variables like 'collation_database';

# 查看表字符集和校对规则
show create table test \G;

402 total views, 4 views today

Revisions

There are no revisions for this post.

No comments yet.

发表评论