Mysql 简明教程
MySQL - Collation
MySQL Collation 是用于确定如何比较和排序字符集的各种字符的一组规则。MySQL 支持多种字符集,包括 ASCII、Unicode 规范、二进制等。
这些字符集中的每个字符都受到权重的限制。MySQL 校对根据其各自的权重对字符进行排序。例如,在比较字符集中两个字符时,如果一个字符的权重大于另一个字符,则该字符较大;反之,如果两个字符具有相等的权重,则它们相等。
每个字符集都必须至少有一个校对(或更多),并且没有两个字符集可以具有相同的校对。
Implementing MySQL Collations
MySQL 实施了各种类型的校对,用于比较字符串 −
-
8 位字符集的简单校对
-
8 位字符集的复杂校对
-
非 Unicode 多字节字符集的校对
-
Unicode 多字节字符集的校对
-
Miscellaneous Collations
每个字符集都具有内置的二进制校对,因此不需要重新定义它们。在任何情况下都不应修改这些内置校对,以免产生意外的服务器行为。
Simple Collations for 8-bit Character Sets
-
由于 8 位字符集只能容纳多达 256 个字符,因此这种类型的校对通过使用长度为 256 的权重数组来实现。
-
字符集中每个字符都与权重一一映射。
-
它是不区分大小写的校对,因此同一字符的大写和小写具有相同的权重。
Complex Collations for 8-bit Character Sets
-
对于复杂的 8 位字符集,通过使用函数定义字符顺序实施整理规则。
-
在此,我们创建一个 C 源文件,用于指定字符集属性并定义必需的支持例程,以正确对该字符集执行操作。
Collations for Non-Unicode Multibyte Character Sets
-
与单字节(8 位)字符不同,多字节字符的代码和权重之间有两种类型的关系。
-
字符的权重等于其代码。
-
字符代码映射到权重,其中权重不一定等于代码。
Set Character Set and Collation
MySQL 允许我们在三个不同的级别设置字符集和整理规则。以下内容对此进行了描述:
-
At Server level
-
At Database level
-
At Table level
At Server Level
在 MySQL 中,字符集 latin1 将用作默认字符集。因此,默认整理规则将为 latin1_swedish_ci 。MySQL 允许我们在服务器启动级别更改这些默认设置。
在启动 MySQL 服务器时,如果我们指定一个字符集,则它将使用该集的默认整理规则。但是,如果我们明确地指定一个字符集和整理规则,则 MySQL 将在为进一步创建的所有数据库中使用该组合。
At Database Level
当我们创建一个数据库,并且如果没有提供任何字符集和整理规则时,该数据库将使用服务器的默认字符集和整理规则。
我们可以使用 CREATE DATABASE 语句在数据库级别覆盖默认字符集和整理规则。
如果我们希望对现有数据库覆盖默认设置,则可以使用 ALTER DATABASE 语句。
At Table Level
在 MySQL 中,数据库可能包含与数据库的字符集和校对不同的字符集和校对的表。
我们可以使用 CREATE TABLE 语句在创建表时指定默认字符集和校对。
如果要覆盖现有表的默认设置,可以使用 ALTER TABLE 语句。
Displaying Default Collations
我们可以使用 SHOW CHARACTER SET 查询显示 MySQL 数据库服务器中所有字符集的默认校对。
SHOW CHARACTER SET;
每个字符集的校对字符串都以字符集名称开头,以 _ci (不区分大小写)、_cs (区分大小写)或 _bin (二进制)结尾。
The MySQL LIKE Clause
在 MySQL 中,使用 LIKE 子句与 SHOW COLLATION 语句,我们可以指定模式来获取与给定模式匹配的校对名称和其他信息。
SHOW COLLATION LIKE 'greek%';