1. MySQL的字符集和校对规则有4个级别的默认设置:
服务器级,数据库级,表级和字段级
2. 服务器级字符集和校对规则的设置:
a. my.cnf
[mysqld]
character-set-server=gbk
b.启动选项中指定
mysqld --character-set-server=gbk
c. 在编译安装时指定
shell > cmake . -DDEFAULT_CHARSET=gbk
注意:默认使用latin1作为服务器字符集,以上加默认都是使用默认校对规则,没有使用校对规则。
d.查看当前服务器的字符集和校对规则
show variables like 'character_set_server';
show variables like 'collation_server';
3. 数据库级字符集和校对规则的设置
a.如果没有指定字符集和校对规则,则使用服务器字符集和校对规则作为数据库的字符集和校对规则
b. 一般在数据库创建时指定该数据库的字符集和校对规则,不建议在数据库已有数据的情况下,修改数据库的字符集和校对规则,旧数据依然按照老的字符集进行存储。(推荐在创建数据库时明确指定字符集和校对规则)
c.显示当前数据库的字符集和校对规则
show variables like 'character_set_database'
show variables like 'collation_database'
4.表级字符集和校对规则
a.表的字符集和校对规则也是在创建时指定,同样如果在表中已有数据的情况下,修改字符集和校对规则,原有数据仍然按照老的字符集和校对规则进行存储,不会进行变更。
b.如果没有指定默认的字符集和校对规则,表会默认使用数据库的
c.查看表的字符集和校对规则
show create table z1 \G;
5. 列字符集和校对规则
a.没有指定,默认使用表的
b.列的设定一般只是一种灵活手段,针对相同的表的不同字段需要使用不同的字符集的情况。(较少出现)
6. 连接字符集和校对规则
a. 这是指客户端和服务器之间进行交互时所使用的字符集和校对规则。
b .交互操作会涉及 三个参数:
character_set_client (客户端)
chatacter_set_connection(连接)
character_set_results(返回结果)
一般情况下这三个参数的值会保持一致,确保用户写入的数据可以正确读取。
c.对于这三个参数不会进行逐个单一设置,而是使用一个命令进行统一设置:
SET NAMES ***;
d. 或者在my.cnf中进行设置
[mysql]
default-character-set=gbk