MySQL字符集和校对规则解读(服务器级、数据库级、表级、字段级)
MySQL内的字符集和校对规则有4个规则的默认设置:服务器级、数据库级、表级、字段级
服务器字符集和校对规则配置:
- 在配置文件中设置
[mysqld]
character-set-server=utf8
- 或者启动项中指定
mysql --character-set-server=utf8
- 或者在编译的时候指定
数据库字符集和校对规则
- 创建数据库:
create database db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
- 查看当前数据库的字符集和校对规则:
show variables like 'character_set_database';
show variables like 'collation_database';
- 修改数据库(一般很少用,再改太复杂):
alter database db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
数据库字符集和校对规则设置
- 如果指定了字符集和校对规则,那么就使用指定的字符集和校对规则
- 如果指定了字符集但没有指定校对规则,那么就使用默认的校对规则
- 如果指定了校对规则但没有指定字符集,那么字符集使用与该校对规则关联的字符集
表字符集和校对规则设置
- 创建表:
create table tb1_name (column_list)
[default character set charset_name [collate collation_name]]
如果创建表的时候没有指定字符集和校对规则,则使用上一级的字符集和校对规则(上一级即数据库级)
- 修改表(很少用):
alter table tb1_name
[default character set charset_name [collate collation_name]]
字段(列)字符集和校对规则
遇到这种情况比较小,这只是MySQL提供给我们灵活设置的手段