mysql字符集首选_MySQL字符集选择

怎样选择合适的字符集

对MySQL数据库来说,字符集很重要,因为数据库存储的数据大部分都是各种文字,字符集对数据库的存储,处理性能都会有所影响。

主要考虑一下几方面的因素

1.满足应用支持语言的需求,应用处理各种各样的文字,发布到使用不同语言的国家或地区,可以选择Unicode字符集,MySQL的话可以选择UTF-8

2.如果应用中涉及已有数据的导入,就要充分考虑数据库字符集对已有数据的兼容性。

假设数据是GBK文字,如果选择其他数据库字符集,就可能导致某些文字无法正确导入的问题。

3.如果数据库需要支持一般是中文,数据量很大,性能要求也很高,可以选择双字节定长编码的中文字符集,比如GBK。

因为相对于UTF-8而言,GBK比较小,每个汉字只占用2个字节,而UTF-8汉字编码需要3个字节,这样可以减少磁盘I/O,数据库缓存,已经网络传输的时间,从而提高性能。

如果是英文字符,仅有少量汉字字符,那么选择UTF-8更好。

4.如果数据库需要做大量的字符运算,如比较、排序,那么选择定长字符集可能会更好,因为定长字符集的处理速度比变长的快。

二、MySQL支持的字符集

MySQL服务器可以支持多种字符集,在同一台服务器,同一个数据库,同一个表都可以指定不同的字符集。

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

例如MySQL5.7支持41种可以用字符集

mysql> show character set;

a1e89330e9238c526cf152f8e19c9bb3.png

三、MySQL的字符集包括字符集和校对规则

1.字符集用来定义MySQL存储字符串的方式

2.校对规则用来定义比较字符串的方式。

3.字符集和校对规则是一对多关系

4.每个字符集至少对应一个校对规则

例如:查看gbk的校对

show collation like ‘gbk%‘;

b8e7b87ecfd661e7823b3e0136be247e.png

校对规则命名约定,它们以字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或者_bin(二元)

四、MySQL字符集的设置

1.MySQL的字符集和校对规则有4个级别的默认设置,服务器级、数据库级、表级、和字段级。

2.服务器字符集和校对规则

默认服务器字符集使用latin1

936aebec6d82aba10b34b9743fe286d1.png

可以在my.cnf中设置服务器字符集,设置完重启就生效

[mysqld]

character-set-server=utf8

查看当前服务器的字符集

mysql> show variables like ‘character_set_server‘;

+----------------------+-------+

| Variable_name | Value |

+----------------------+-------+

| character_set_server | utf8 |

+----------------------+-------+

1 row in set (0.00 sec)

4.查看当前服务器的校对规则

mysql> show variables like ‘collation_server‘;

+------------------+-----------------+

| Variable_name | Value |

+------------------+-----------------+

| collation_server | utf8_general_ci |

+------------------+-----------------+

1 row in set (0.00 sec)

注意:创建完数据库要修改字符集,可以使用alter db_name character set

但是数据库里面存在数据,就不能将已有的数据按照新的字符集进行存放,所以不能修改数据库字符集直接修改数据的内容。

5.连接字符集和校对规则

客户端和服务器的交互操作,MySQL提供了3个不同的参数:character_set_client,character_set_connection和character_set_result。

分别代表客户端、连接和返回结果的字符集

通常这个3个字符集应该相同的,才可以确保用户写入的数据可以正确读出

可以在my.cnf中设置

[mysql]

default-character-set=utf8

这样服务器启动后,所有连接默认就是使用utf8字符集进行连接的,而不需要在程序中执行set names。

五、字符集的修改步骤

alter database db_name character set = utf8;

alter table table_name character set = utf8;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值