MySQL修改表和字段的字符集和排序规则

摘要:通过设置表的字符集和排序规则,解决MySQL查询时不区分字母大小写、插入时不支持特殊字符的问题。

  关于MySQL查询时不区分字母大小写、插入时不支持特殊字符的问题,只有修改表的字符集和排序规则才能根治,而且事半功倍。utf8mb4支持的最低mysql版本为5.5.3+,若不是,请升级到较新版本。下面以把字符集和排序规则分别修改为utf8mb4 和 utf8mb4_bin为例,进行展开描述,当然,童鞋们也可以换成其它字符集和排序规则,请量体裁衣,自行决定。

查看表的字符集和排序规则

  查看schema中某张表的排序规则:

show table status from schema_name like '%table_name%';

  查看schema中所有表的排序规则:

SELECT table_name, table_type, engine, version, table_collation
 FROM information_schema.tables WHERE table_schema = 'schema_name' ORDER BY table_name DESC;

  上述SQL脚本支持表名模糊匹配。查看某张表中字段的字符集和排序规则:

show full COLUMNS FROM table_name;

修改表的字符集和排序规则

  修改数据库的字符集编码命令如下:

ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

  修改表的字符集编码:

alter table table_name character set utf8mb4;

  它只修改表新增列的默认定义,已有列的字符集不受影响,请格外注意。若要同时修改表字符集和已有列字符集,并将已有数据进行字符集编码转换,请使用如下CONVERT TO脚本:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

修改字段的字符集和排序规则

  修改某个字段的字符集编码:

ALTER TABLE table_name CHANGE column_name column_name VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;

  注:执行命令过程中字段名无需加引号。修改完数据库字符集,立即生效。

结束语

  工作中处处都需要学习,有时候看似简单的一个优化,可以让你深入学习后收获各种知识。所以在学习中要不求甚解,不仅要了解这个知识点,也要熟悉为什么要这么做。

posted @ 2022-02-27 10:17  楼兰胡杨  阅读(7116)  评论(0编辑  收藏  举报