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

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

时间:2023-07-26 18:23:54浏览次数:30  
标签:字符 ci utf8mb4 数据库 字符集 MySQL 排序

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

 

标签:字符,ci,utf8mb4,数据库,字符集,MySQL,排序
From: https://www.cnblogs.com/RunningSnails/p/17583038.html

相关文章

  • java统计数据库字段
    packagedb;importjava.sql.*;importjava.util.ArrayList;importjava.util.List;/***@Author:dominic**/publicclassStatistic{publicstaticvoidmain(String[]args)throwsSQLException,ClassNotFoundException{Stringa="x......
  • js字符串数据排序
    results=[{model:'CM201-2'},{model:'CM201-3'},{model:'CM201-6'},{model:'H1Ne-02-1'},{model:'MGV200'},{model:'UNT400G1'},]results.sort((a,b)=>{returna.model.localeCompare(b.model)}); ......
  • SQL Server 数据库
    如果SQLServer数据库文件大小为0,可能是由于文件损坏或其他问题导致的。以下是一些修复数据库文件的常见命令和步骤:验证数据库文件完整性:使用以下命令检查数据库文件的完整性,并尝试修复任何损坏的页面或逻辑错误:DBCCCHECKDB('YourDatabaseName')WITHREPAIR_ALLOW_DATA_......
  • C#-实现对版本号的自动排序
    前提是版本号都是Vxx.xx.xx.xx....的格式,xx代表数字,不能有除V以外其他字母记录两种比较方法,一种是vs自带的Version类,一种是自己写的,根据比较结果,使用冒泡排序进行排序。先给出一堆乱序的版本号:List<string>verList;privatevoidInitVersion(){verList=newList<str......
  • [Java] Stream流求和、排序、分组
    List、Set集合通过Stream流求和一、泛型为Integer、Long、Double、BigDecimal求和Integersum=scores.stream().reduce(Integer::sum).orElse(0);Longsum=scores.stream().reduce(Long::sum).orElse(0L);Doublesum=scores.stream().reduce(Double::sum).orElse(0.00)......
  • Mybatis数据库模型-代码生成器
    pom文件添加<dependencies><!--SpringBoot整合MyBatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3&l......
  • 5分钟迁移关系型数据库到图数据库
    本文分享自华为云社区《5分钟迁移关系型数据库到图数据库》,作者:RiverSide。以往开发者会使用关系型数据库如MySQL对领域数据进行存储,这类关系型数据库诞生较早,但并不适合存储关联度较大的数据,如社交关系网络。随着高关联度数据的存储及分析的需求随数据量日益增长,将海量关联数据......
  • 使用Memcached、Spring AOP构建数据库前端缓存框架
     上回说到Memcahed的安装及java客户端的使用(http://my249645546.iteye.com/blog/1420061),现在我们使用memcached、SpringAOP技术来构建一个数据库的缓存框架。数据库访问可能是很多网站的瓶颈。动不动就连接池耗尽、内存溢出等。前面已经讲到如果我们的网站是一个分布式的大型站......
  • GaussDB(for Redis)多租户:读写权限控制和数据库隔离的完美融合
    本文分享自华为云社区《GaussDB(forRedis)企业级特性揭秘之多租户管理》,作者:GaussDB数据库。华为云GaussDB(forRedis)持续完善企业级增强特性,是名副其实的"RedisPlus",其中很经典的企业级特性是多租户能力,支持添加只读账号、读写账号,并且可约束每个账号可访问的数据库(DB)范围......
  • 【随手记录】关于关系型数据库索引的建立
    1、索引不是万能的,每类索引都有对应使用情况2、索引不是越多越好,建立索引对应需要维护索引数据3、对于like进行模糊搜索时,并不是所有的情况都走索引,需要根据具体的写法来判断4、where语句最好不要出现in!=等操作符5、对于大量重复的数据查询索引可能不生效6、尽量避免在where条......