- 通过设置表的字符集和排序规则,解决MySQL查询时不区分字母大小写、插入时不支持特殊字符的问题。
- 关于MySQL查询时不区分字母大小写、插入时不支持特殊字符的问题,只有修改表的字符集和排序规则才能根治,而且事半功倍。utf8mb4支持的最低mysql版本为5.5.3+,若不是,请升级到较新版本。
一、字符集utf8 和Unicode、utf8 和utf8mb4 区别
新建mysql数据库的时候,需要指定数据库的字符集,一般我们都是选择utf8这个字符集,但是还会又一个utf8mb4这个字符集,好像和utf8有联系。
涨知识一
MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。
可以简单的理解 utf8mb4 是目前最大的一个字符编码,支持任意文字。
涨知识二
Unicode可以认为是字符的编号,即每个字符在Unicode表里面的序号。utf8是一种编码方式,类似于哈夫曼编码过程,就是把常用(位置靠前)的Unicode字符用短编码表示,不常用的字符用长代码表示,从而实现更小的整个文档的文件大小。在UTF-8编码中,英文字母是一个字节,中文(非生僻字)是2~3个字节。可以认为,utf8是对Unicode的一种压缩算法。
二、mysql库的排序规则
utf8_unicode_ci比较准确,utf8_general_ci速度比较快。(更多查看)通常情况下 utf8_general_ci的准确性就够我们用的了,在我看过很多程序源码后,发现它们大多数也用的是utf8_general_ci,所以新建数据 库时一般选用utf8_general_ci就可以了。
如果是utf8mb4那么对应的就是 utf8mb4_general_ci utf8mb4_unicode_ci。
三、查看更改字符集、排序规则
1. 查看数据库的字符集方式
-- database_name 为数据库名称
SHOW CREATE DATABASE database_name;
2. 查看表的字符集方式
-- table_name为表的名称
SHOW CREATE TABLE table_name;
3. 查看字段的字符集方式
-- column_name为字段名称
SHOW FULL COLUMNS FROM column_name;
4. 修改数据库的字符集方式
-- database_name 为数据库名称
-- utf8为目标字符编码
ALTER DATABSE database_name DEFAULT CHARACTER SET utf8mb4;
5. 修改表的字符集方式
-- table_name为表的名称
-- utf8为目标字符编码
ALTER TABLE table_name DEFAULT CHARACTER SET utf8;
6. 修改字段的字符集方式文章来源:https://www.toymoban.com/news/detail-531572.html
-- table_name为表的名称
-- column_name为字段名称
-- varchar(20)为字段的类型
-- utf8为目标字符集
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(20) CHARACTER SET utf8;
7. 同时修改表和表中所有字符类型的字段字符集方式文章来源地址https://www.toymoban.com/news/detail-531572.html
-- 例子:alter table user2 convert to character set utf8 collate utf8_general_ci;
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
到了这里,关于【MySQL】关于数据库字符编码以及字符集排序相关知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!