赞
踩
创建数据库在开发过程并不是一个陌生的动作,最简单的命令就是:
CREATE DATABASE book_bms;
这样就简简单单的创建了一个数据库,但是明面上并没有指定字符集与排序规则,都是采用了默认的方式进行设置,但是在可视化工具Navicat创建数据库的时候又有这方便的提示,不懂的小伙伴也是一头雾水:
针对这一块,作简要梳理:
在MySQL中,字符集(Character Set)是指用于存储数据库中字符数据的一组规则。字符集决定了数据库能够存储哪些字符以及如何存储它们。指定字符集是在创建数据库时设置的一个参数,它影响了数据库中所有表的字符集。
MySQL支持多种字符集,这些字符集涵盖了广泛的Unicode字符以及常见的单字节字符集。以下是一些MySQL中常见的字符集:
latin1
:又称ISO-8859-1,适用于西欧语言。utf8
:又称UTF-8,是一种变长的编码,可以存储所有Unicode字符。ascii
:只包含ASCII字符。utf8mb4
:扩展的UTF-8编码,可以存储包括emoji在内的所有Unicode字符。utf16
:使用16位编码来存储Unicode字符。utf32
:使用32位编码来存储Unicode字符。binary
:二进制比较字符串,不区分字符的实际值,用于需要精确比较的场景。armscii8
、cp1250
、cp1251
、cp1256
等:这些是针对特定区域和语言的编码。utf8mb4
,这样在该数据库中创建的所有表都会使用这个字符集。如果您创建表时没有指定字符集,则表会使用数据库级别的默认字符集。utf8mb4
。CREATE DATABASE book_bms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
在这个例子中,utf8mb4
是字符集,而utf8mb4_unicode_ci
是排序规则,它表示不区分大小写,并使用Unicode标准进行排序。
在MySQL中,排序规则(Collation)定义了如何比较数据库中的字符串。每种字符集都有与之相关的多种排序规则,这些规则决定了如何解释字符及其在比较中的排序顺序。例如,对于utf8mb4
字符集,有不同的排序规则,如utf8mb4_general_ci
、utf8mb4_bin
、utf8mb4_unicode_ci
等。
排序规则通常包含以下几个部分:
utf8mb4
。ci
表示不区分大小写,cs
表示区分大小写。alphabetic
、digit
、case
等。utf8mb4_unicode_520_ci
表示使用Unicode 5.2.0版本的排序规则,适用于某些特殊需求。utf8mb4_general_ci
:默认排序规则,不区分大小写,适用于大部分场合。utf8mb4_bin
:二进制比较,区分大小写,适用于需要精确比较字符串的场景。utf8mb4_unicode_ci
:不区分大小写,使用Unicode标准进行排序。utf8mb4_unicode_520_ci
:使用特定的Unicode版本进行排序,适用于某些特殊语言或字符。latin1_swedish_ci
:对于latin1
字符集,不区分大小写,适用于瑞典语或其他使用西欧字符集的语言。utf8mb4_unicode_ci
作为排序规则。要更改现有数据库的字符集和排序规则,您需要使用ALTER DATABASE
语句。请注意,这个操作可能会影响数据库中的所有表和数据,因此在执行之前应该备份您的数据库。
以下是一个示例SQL语句,用于将现有数据库old_db
的字符集更改为utf8mb4
,并更改排序规则为utf8mb4_unicode_ci
:
ALTER DATABASE old_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
如果您只想更改数据库的排序规则,而不改变字符集,可以使用以下语句:
ALTER DATABASE old_db COLLATE utf8mb4_unicode_ci;
同样,如果您只想更改字符集,而不改变排序规则,可以使用以下语句:
ALTER DATABASE old_db CHARACTER SET utf8mb4;
在执行这些操作之前,请确保:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。