一文彻底弄懂MySQL的字符集和排序规则

本文详细解释了MySQL中字符集(如GBK、utf8mb4)和排序规则(如utf8_general_ci)的选择原则,推荐新建数据库时使用utf8mb4字符集和utf8_general_ci排序规则,以支持中文且兼顾国际化和性能需求。
摘要由CSDN通过智能技术生成

引言

在MySQL新建一个数据库的时候,第一步就是要选择字符集和排序规则,那你是否真正懂得什么是字符集?什么是排序规则?在新建一个数据库的过程中,选择什么字符集和排序规则最适合?

什么是字符集?如何选择字符集?

字符集就是多个字符的集合,比如诗集里面就包含了诗,文集里面就包含了不同的文章,而不同的字符集里面就包含了不同的字符,也就能够支持存储不同类型的数据。
MySQL常用的字符集如下:

GBK:支持中文,但是不是国际通用字符集
UTF-8:支持中英文混合场景,是国际通用字符集
latin1:MySQL默认字符集
utf8mb4:完全兼容UTF-8,用四个字节存储更多的字符

如果只做国内业务,为了性能考虑可以选择GBK
但哪个公司没有一个国际化的梦想,为了将来考虑,选择utf8mb4更合适,它能完全兼容UTF-8并且有其它优势。

什么是排序规则?如何选择排序规则?

排序规则是指定字符集下字符间的比较规则。
一些常用的命名规则如下:

_ci :结尾表示大小写不敏感 (caseinsensitive)
_cs :表示大小写敏感 (case sensitive)
_bin :表示二进制的比较 (binary)

常见字符集utf8mb4对应的常用排序规则如下:

utf8mb4_general_ci :不区分大小写, 校对速度快, 但准确度稍差。
utf8mb4_bin::字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容。
utf8mb4_unicode_ci:不区分大小写, 校准确度高,但校对速度稍慢。

通常情况下, 新建数据库时一般选用 utf8_general_ci 就可以了。

结论

新建数据库时,通常字符集可以选择utf8mb4,排序规则可以选择utf8_general_ci
因为utf8mb4支持中文并且是国际通用字符集,而utf8_general_ci不区分大小写, 校对速度快。

参考文档

ASCII字符集、Unicode字符集下UTF-8 和UTF-16编码、GBK(GB2312)字符集
MySQL字符集详解
MySQL 排序规则简介

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计方法,它将数据和操作数据的方法组合成对象,通过定义类(class)来创建对象。下面是一些概念和原则,可以帮助你更好地理解Python面向对象编程。 1. 类和对象: - 类是一种抽象的数据类型,它定义了对象的属性和方法。 - 对象是类的实例,它具有类定义的属性和方法。 2. 属性和方法: - 属性是对象的数据,可以是整数、字符串、列表等。 - 方法是对象的行为,可以是函数或过程。 3. 封装: - 封装是将数据和对数据的操作封装在一起,以创建一个独立的实体。 - 使用类来封装数据和方法,可以隐藏实现细节,提高代码的可读性和可维护性。 4. 继承: - 继承是一种机制,允许一个类继承另一个类的属性和方法。 - 子类可以重用父类的代码,并且可以添加新的属性和方法。 5. 多态: - 多态是指同一个方法可以在不同的类中具有不同的实现方式。 - 多态可以提高代码的灵活性和可扩展性。 下面是一个简单的例子,展示了如何定义一个类、创建对象并调用对象的方法: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print(f"Hello, my name is {self.name} and I'm {self.age} years old.") # 创建对象 person = Person("Alice", 25) # 调用对象的方法 person.say_hello() ``` 这个例子定义了一个名为`Person`的类,它有两个属性(`name`和`age`)和一个方法(`say_hello`)。我们通过`Person`类创建了一个名为`person`的对象,并调用了它的`say_hello`方法。 希望这个简单的例子能帮助你更好地理解Python面向对象编程。如果你有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值