【MySQL】关于数据库字符编码以及字符集排序相关知识 |
您所在的位置:网站首页 › 怎么修改mysql数据排序规则 › 【MySQL】关于数据库字符编码以及字符集排序相关知识 |
通过设置表的字符集和排序规则,解决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. 修改字段的字符集方式 -- table_name为表的名称 -- column_name为字段名称 -- varchar(20)为字段的类型 -- utf8为目标字符集 ALTER TABLE table_name CHANGE column_name column_name VARCHAR(20) CHARACTER SET utf8;7. 同时修改表和表中所有字符类型的字段字符集方式 -- 例子:alter table user2 convert to character set utf8 collate utf8_general_ci; ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...] |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |