数据库常用字符集及排序规则
字符集是指在计算机中用来表示字符的编码方式。不同的字符集包含了不同的字符集合,并且每个字符都有一个唯一的编码。在MySQL中,字符集是指在数据库中存储和处理数据时所使用的字符编码方式。
1、字符集
1、utf8
UTF-8是MySQL中最常用的字符集,它支持多语言字符集,包括中文、英文、日文等。
utf8是MySQL数据库中的一种字符集,只支持三字节的UTF8字符,MySQL中字符串的长度代表的是字符数,比如 CHAR(100) Mysql 会保留 300字节长度。
2、utf8mb4
utf8mb4也是MySQL数据库中的一种字符集,支持四字节的长度的UTF8字符,是utf8的超集。支持emoji的编码支持。
2.1、utf8mb4_bin
区分大小写,将字符串中的每个字符用二进制数据编译存储,区分大小写,m 和 M 在字符判断中会被区别对待,同时可以存储二进制内容。
2.2、utf8mb4_general_ci
不区分大小写,ci 是 case insensitive 的 简写,即 大小写不敏感,m 和 M 在字符判断中会被当成一样的。
2.3、utf8mb4_unicode_ci
校对规则仅部分支持Uncode校对规则算法,部分字符不支持,同时utf8mb4_unicode_ci不能完全支持组合的记号。
3、GBK
GBK是一种中文字符集,它是在GB2312的基础上扩展而来,能够表示中国大陆所有汉字。GBK在MySQL中也被广泛使用,尤其是在处理中文数据时。
2、测试
2.1、数据准备
创建表并新增记录,,排序规则为 utf8mb4_general_ci,操作语句如下:
1 DROP TABLE IF EXISTS `test01`; 2 CREATE TABLE `test01` ( 3 `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL 4 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; 5 6 7 INSERT INTO `test01` VALUES ('m');
2.2、排序规则验证
执行查询,详情如下:
调整test01表的排序规则为 utf8mb4_bin,详情如下 :
同时调整字段的排序规则为 utf8mbd_bin,详情如下:
再次执行查询,详情如下:
3、总结
排序方式的命名规则为:字符集名字_语言_后缀,后缀详情:
_ci:不区分大小写的排序方式。
_cs:区分大小写的排序方式。
_bin:二进制排序方式,大小比较将根据字符编码。