【MySQL】关于数据库字符编码以及字符集排序相关知识

您所在的位置:网站首页 怎么修改mysql数据排序规则 【MySQL】关于数据库字符编码以及字符集排序相关知识

【MySQL】关于数据库字符编码以及字符集排序相关知识

2023-07-15 10:08| 来源: 网络整理| 查看: 265

通过设置表的字符集和排序规则,解决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