MySQL中设置服务器级别的默认排序规则的方法

 更新时间:2024年08月05日 09:38:47   作者:zxrhhm  
collation_server 是一个系统变量,它定义了服务器级别的默认排序规则,本文主要介绍了MySQL中设置服务器级别的默认排序规则的方法,具有一定的参考价值,感兴趣的可以了解一下

在MySQL中,collation_server 是一个系统变量,它定义了服务器级别的默认排序规则(collation)。当你创建新的数据库或表而没有明确指定排序规则时,MySQL会使用这个服务器级别的默认排序规则。

MySQL 8.0的默认排序规则是utf8mb4_0900_ai_ci。这一排序规则是在MySQL 8.0版本中引入的,它基于Unicode 9.0.0的归类算法(Unicode Collation Algorithm),并且具有以下特性:

  • ai(accent insensitive):表示口音不敏感,即在排序和比较时不区分重音。例如,字母e、è、é、ê和ë在排序时被视为相同。
  • ci(case insensitive):表示不区分大小写,即排序时大写字母和小写字母被视为相同。例如,字母p和P在排序时被认为是相同的。

utf8mb4_0900_ai_ci排序规则是utf8mb4_unicode_ci系列中的一种,专门用于支持utf8mb4字符集,该字符集支持最多4字节的UTF-8编码,能够表示更广泛的字符范围,包括一些特殊字符和表情符号。

与utf8mb4_general_ci相比,utf8mb4_unicode_ci(包括utf8mb4_0900_ai_ci)在排序和比较时更加精确,能够正确处理各种语言的字符,但在某些情况下,其性能可能略逊于utf8mb4_general_ci,因为utf8mb4_general_ci在排序和比较时采用了更简单的算法。

总的来说,MySQL 8.0选择utf8mb4_0900_ai_ci作为默认排序规则,旨在提供更好的国际化和跨语言支持,同时保持一定的性能水平。然而,在特定场景下,用户可能需要根据实际需求选择合适的排序规则。

如果你想要将MySQL服务器的默认排序规则设置为 utf8mb4_general_ci,你可以通过修改MySQL的配置文件(如 my.cnf 在Linux上,或 my.ini 在Windows上)来实现,或者通过运行SET命令(但请注意,SET命令只对当前会话有效,不会永久更改服务器的默认设置)。

修改配置文件

找到MySQL的配置文件(my.cnf 或 my.ini)。

在 [mysqld] 部分添加或修改以下行:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

注意:character-set-server 也应该被设置为 utf8mb4,因为排序规则是基于字符集的。

保存配置文件并重启MySQL服务以使更改生效。

使用SET命令(临时更改)

如果你只是想在当前MySQL会话中临时更改排序规则,可以使用SET命令:

SET NAMES 'utf8mb4' COLLATE 'utf8mb4_general_ci';

或者:

SET character_set_server = utf8mb4;
SET collation_server = utf8mb4_general_ci;

但请注意,SET character_set_server 和 SET collation_server 在某些MySQL版本中可能不是动态可变的,这意味着它们不能在运行时更改,而需要修改配置文件并重启MySQL服务。

验证更改

要验证MySQL服务器的默认排序规则是否已更改为 utf8mb4_general_ci,你可以登录到MySQL命令行工具并运行以下命令:
SHOW VARIABLES LIKE ‘collation_server’;

-- SHOW VARIABLES LIKE 'collation_server';

(root@localhost)[db01]> show variables like 'collation_server';
+------------------+--------------------+
| Variable_name    | Value              |
+------------------+--------------------+
| collation_server | utf8mb4_general_ci |
+------------------+--------------------+
1 row in set (0.01 sec)

这将显示当前服务器级别的默认排序规则。

注意事项

  • 修改MySQL服务器的默认字符集和排序规则可能会影响数据库的性能和存储需求。
  • 在进行此类更改之前,请确保你了解这些更改可能对现有数据和应用程序产生的影响。
  • 如果你是在一个生产环境中工作,请在进行此类更改之前进行充分的测试,并确保有适当的数据备份。
  • 更改MySQL服务器的配置通常需要管理员权限。

到此这篇关于MySQL中设置服务器级别的默认排序规则的方法的文章就介绍到这了,更多相关MySQL默认排序规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • LInux下安装MySQL5.6 X64版本步骤详解

    LInux下安装MySQL5.6 X64版本步骤详解

    这篇文章主要介绍了LInux下安装MySQL5.6 X64版本步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • MySQL中distinct和group by去重效率区别浅析

    MySQL中distinct和group by去重效率区别浅析

    distinct 与 group by均可用于去重,下面这篇文章主要给大家介绍了关于MySQL中distinct和group by去重效率区别的相关资料,文中介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Mysql数据库自增id、uuid与雪花id详解

    Mysql数据库自增id、uuid与雪花id详解

    在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,这篇文章主要给大家介绍了关于Mysql数据库自增id、uuid与雪花id的相关资料,需要的朋友可以参考下
    2023-02-02
  • MySql如何去除字符串前缀,两边,后缀

    MySql如何去除字符串前缀,两边,后缀

    这篇文章主要介绍了MySql如何去除字符串前缀,两边,后缀,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • MySQL中正则表达式用法示例详解

    MySQL中正则表达式用法示例详解

    MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配,这篇文章主要介绍了MySQL中正则表达式用法,需要的朋友可以参考下
    2025-06-06
  • 零基础掌握JDBC操作MySQL

    零基础掌握JDBC操作MySQL

    JDBC是指Java数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库
    2022-10-10
  • SQL面试题:求时间差之和(有重复不计)

    SQL面试题:求时间差之和(有重复不计)

    这篇文章主要介绍了SQL面试题:求时间差之和(有重复不计),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 详解如何在SpringBoot中配置MySQL数据库的连接数

    详解如何在SpringBoot中配置MySQL数据库的连接数

    在Spring Boot中配置MySQL数据库连接数通常涉及到两个主要的配置,数据源配置和连接池配置,本文给大家介绍了Spring Boot项目如何配置MySQL数据库连接数的详细步骤,并通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-06-06
  • 深入解析mysql中order by与group by的顺序问题

    深入解析mysql中order by与group by的顺序问题

    本篇文章是对mysql中order by与group by的顺序问题进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL提高分页效率

    MySQL提高分页效率

    本文分享的这段代码是大数据量时提高分页的效率的测试代码,感兴趣的小伙伴可以参考一下
    2015-10-10

最新评论