在 MySQL 数据库中,Collation(排序规则或字符集排序规则)是用于指定字符集的字符比较和排序方式的一组规则。它决定了在比较和排序字符时,字符的顺序、大小写敏感性、重音符号等特性。
每个 MySQL 数据库都有一个默认的字符集和排序规则。当创建表时,如果没有指定字符集和排序规则,MySQL 将使用数据库的默认字符集和排序规则。同时,还可以在表的列级别或字符串类型字段的级别上单独指定字符集和排序规则,以覆盖数据库的默认设置。
常见的 MySQL 字符集包括 utf8、utf8mb4、latin1、gbk 等,用于定义数据库中存储的字符编码方式。它决定了数据库中存储的文本数据的编码格式,包括文字、数字、符号等字符的表示方式。
常见的排序规则包括 utf8_general_ci、utf8_bin、latin1_swedish_ci 等。其中,ci 表示不区分大小写,bin 表示二进制排序。
通过使用不同的字符集和排序规则,可以影响字符串比较和排序的结果。例如,在 utf8_general_ci 排序规则下,字符串 "apple" 和 "APPLE" 被视为相等,而在 utf8_bin 排序规则下,它们被视为不同。因此,在选择字符集和排序规则时,需要根据具体的业务需求来进行选择,以确保数据的正确比较和排序。
MySQL 支持多种字符集,常见的字符集包括:
utf8
:UTF-8 编码,支持多种语言字符,是较为通用的字符集,适用于国际化应用。utf8mb4
:UTF-8 编码的扩展,支持更多的 Unicode 字符,适用于处理一些特殊字符。latin1
:ISO 8859-1 字符集,支持西欧语言字符。gbk
:GBK 字符集,支持简体中文字符。utf16
:UTF-16 编码,支持更多的 Unicode 字符,但通常较少使用。
在创建 MySQL 数据库或表时,可以通过指定字符集来定义数据库或表的默认字符集。例如:
CREATE DATABASE my_database DEFAULT CHARACTER SET utf8mb4;CREATE TABLE my_table (id INT,name VARCHAR(50)
) DEFAULT CHARACTER SET utf8mb4;
如果没有指定字符集,默认情况下 MySQL 会使用服务器的默认字符集。
请注意,字符集的选择对于数据存储和查询非常重要。确保正确选择适合数据类型和业务需求的字符集,以避免字符乱码和数据损坏等问题。
查看字符集:
1、查看数据库字符集:
SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = 'your_database_name';2、查看表字符集:
SELECT table_name, table_collation FROM information_schema.TABLES WHERE table_schema = 'your_database_name';3、查看列字符集:
SELECT column_name, character_set_name FROM information_schema.COLUMNS WHERE table_schema = 'your_database_name' AND table_name = 'your_table_name' AND column_name = 'your_column_name';