MySQL建立数据库时字符集与排序规则的选择详解

 更新时间:2023年06月12日 09:06:58   作者:十一*  
当数据库需要适应不同的语言就需要有不同的字符集,下面这篇文章主要给大家介绍了关于MySQL建立数据库时字符集与排序规则的选择的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

在MySQL中,字符集和排序规则是区分开来的,你可以单独设置字符集和排序规则。

MySQL字符集和排序规则有关联而且还不是必选项,如果字符集和排序规则都不填写,Mysql会做默认处理;或者设置其一,比如设置字符集,会默认设置了与字符集相应的排序规则。

我们建立数据库是总要涉及到字符集和排序规则的选择问题?怎么选择呢,有什么区别呢?

一、字符集?

先说字符,字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

字符集(Character set)是多个字符的集合,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,就需要进行字符编码,以便计算机能够识别和存储各种文字。

字符编码(Character encoding)也称字集码,是把字符集中的字符通过编码成为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。

二、Mysql中的字符集

在MySQL中,常用的几个字符集有UTF8、UTF8MB4、UTF16、UTF32等,那么Unicode与UTF8、UTF8MB4、UTF16、UTF32是什么关系?我们新建数据库时选择哪种字符集呢?

1.Unicode与UTF8、UTF8MB4、UTF16、UTF32关系

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。UTF8、UTF16、UTF32是Unicode码一种实现形式,都是属于Unicode编码。

2.Mysql新建数据库时选择哪种字符集呢?

UTF8和UTF8MB4是常用的两种字符集,至于这两个选用哪个要根据自己业务情况而定。UTF8MB4兼容UTF8,比UTF8能表示更多的字符,Unicode编码区从编码区1-126属于UTF8区,当然UTF8MB4也兼容这个区,126行以下就是UTF8MB4扩充区,所以你要根据自己的业务进行选择,一般情况下UTF8就满足需求,当然如果考虑到以后扩展,比如考虑到以后存储emoji,就选择UTF8MB4,否则只是浪费空间。我建议还是选择UTF8MB4,毕竟对于大部分公司而言空间不是什么大问题。

三、Mysql排序规则

UTF8MB4常用的排序规则:utf8mb4_unicode_ciutf8mb4_general_ciutf8mb4_bin,选用哪种方式呢?先来分析一下:

1、准确性:

(1)utf8mb4_unicode_ci 是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序,不区分大小写

(2)utf8mb4_general_ci 没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致,不区分大小写

2、性能:

  (1)utf8mb4_general_ci 在比较和排序的时候更快

  (2)utf8mb4_unicode_ci 在特殊情况下,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。相比选择哪一种collation,使用者更应该关心字符集与排序规则在db里需要统一。

  (3)utf8mb4_bin:将字符串每个字符用二进制数据编译存储,区分大小写,而且可以存二进制的内容。

总而言之,utf8mb4_general_ci 和utf8mb4_unicode_ci 是我们最常使用的排序规则。utf8mb4_unicode_ci 校对速度快,但准确度稍差。utf8_unicode_ci准确度高,但校对速度稍慢,两者都不区分大小写。这两个选哪个视自己情况而定,还是那句话尽可能保持db中的字符集和排序规则的统计。

四、Mysql查询字符集和排序规则常用的命令

功能命令
查看数据库字符集show create database 数据库名
查看数据表全部字段排序规则show full columns from 表

总结 

到此这篇关于MySQL建立数据库时字符集与排序规则的选择的文章就介绍到这了,更多相关MySQL字符集与排序规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MYSQL 表的全面总结

    MYSQL 表的全面总结

    这篇文章主要介绍了MYSQL表,文章主要围绕MySQL表的相关资料如创建表、删除表、修改表、等展开内容,需要的朋友可以参考一下,希望对你有所帮助
    2021-11-11
  • MySql常用数据类型与操作详解

    MySql常用数据类型与操作详解

    MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的。本文将为大家详细介绍一下MySQL的基础操作,需要的可以参考一下
    2022-07-07
  • MySQL之库和表的操作实践

    MySQL之库和表的操作实践

    本文讲解MySQL数据库和表的操作,涵盖创建、修改、删除,字符集与校验规则设置,备份恢复方法,及查看连接状态,强调注意事项如删除风险和校验规则对大小写的影响
    2025-09-09
  • Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]

    Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]

    这几天基于Heritrix写了一个爬虫,用到mysql,在导入导出数据时,遇到一些乱码问题,好不容易解决了,记录一下,以备查看
    2013-04-04
  • MySql一条查询语句的执行流程究竟是怎么样的

    MySql一条查询语句的执行流程究竟是怎么样的

    一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇文章了,下面这篇文章主要给大家介绍了关于MySql一条查询语句的执行流程究竟是怎么样的,需要的朋友可以参考下
    2024-06-06
  • mysql报错:Deadlock found when trying to get lock; try restarting transaction的解决方法

    mysql报错:Deadlock found when trying to get lock; try restarti

    这篇文章主要给大家介绍了关于mysql出现报错:Deadlock found when trying to get lock; try restarting transaction的解决方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • 如何将mysql迁移到翰高数据库

    如何将mysql迁移到翰高数据库

    瀚高基础软件股份有限公司成立于2005年,是国内数据库行业龙头企业,专业从事数据库管理系统研发、销售与服务,下面这篇文章主要介绍了如何将mysql迁移到翰高数据库的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-03-03
  • Mysql匿名登录无法创建数据库问题解决方案

    Mysql匿名登录无法创建数据库问题解决方案

    这篇文章主要介绍了Mysql匿名登录无法创建数据库问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • windows下mysql 8.0.12安装步骤及基本使用教程

    windows下mysql 8.0.12安装步骤及基本使用教程

    这篇文章主要为大家详细介绍了windows下mysql 8.0.12安装步骤及基本使用教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 基于Php mysql存储过程的详解

    基于Php mysql存储过程的详解

    本篇文章是对Php中的mysql存储过程进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论