目录
一、MySQL中的字符集
执行以下SQL语句,可以查看MySQL中所有可用的字符集。
SHOW CHARACTER SET;
MySQL字符集包括字符集和排列顺序两个概念,其中字符集定义MySQL存储字符串的方式,排序规则定义字符串的排序方式。
每个字符集至少对应一个排序规则,可以执行以下程序,查看字符集所对应的排序规则。
SHOW COLLATION ‘字符集名称%’;
二、选择字符集
在MySQL中,为数据库设置字符集时应考虑一下几点:
1.如果数据库要处理不同地区的文字,就应选择Unicode字符集,在MySQL中,就是utf8。
2.如果数据库只需要支持一般中文,并且数据量很大,性能要求很高,可以使用GBK字符集。
3.如果数据库需要做大量运算,就应该选择定长字符集,如latin1和GBK等。
三、查看与修改字符集
用户应该在向数据库插入数据之前确定字符集的种类。
MySQL默认的字符集为latin1,字符集和排序规则分为四个级别:服务器级、数据库级、数据表级和字段级。
1.服务器级
执行SQL语句,查看当前服务器使用的字符集
SHOW VARIABLES LIKE ’character_set_server’;
如果用户需要改变服务器默认字符集和排序规则,可以通过修改配置文件来实现。
打开my.ini配置文件,在“[mysqld]”组中添加自己设置的字符集和排序规则,然后保存文件即完成修改。
修改完毕后,需要重启MySQL服务,此u该才能生效。
2.数据库级
数据库默认的字符集与服务器设置的字符集相同,数据库的字符集和排序规则可以在数据库创建时指定,也可以在数据库创建之后修改。
执行SQL语句查看数据库使用的字符集:
SHOW VARIABLES LIKE ‘character_set_database’;
使用关键字DEFAULT CHARSET可以在创建数据库时选择字符集:
CREATE DATABASE database_name DEFAULT CHARSET set_name;
上述语句中,database_name表示数据库名称,set_name表示字符集名称。
使用关键字ALTER可以修改数据库的字符集:
ALTER DATABASE database_name DEFAULT CHARSET set_name;
注:在修改数据库字符集时,如果数据库中已存在数据,那么这部分数据不会按照修改后的字符集进行存储。