数据库常用字符集及排序规则

发布时间 2023-07-26 18:16:52作者: 无虑的小猪

  字符集是指在计算机中用来表示字符的编码方式。不同的字符集包含了不同的字符集合,并且每个字符都有一个唯一的编码。在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:二进制排序方式,大小比较将根据字符编码。