文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  字符集和排序规则分配示例

12.3.9 字符集和排序规则分配示例

以下示例说明了 MySQL 如何确定默认字符集和排序规则值。

示例 1:表和列定义

CREATE TABLE t1
(
    c1 CHAR(10) CHARACTER SET latin1 COLLATE latin1_german1_ci
) DEFAULT CHARACTER SET latin2 COLLATE latin2_bin;

这里我们有一列,它的字符集为 latin1,排序规则为 latin1_german1_ci。定义是明确的,因此非常直观。请注意,在 latin2 表中存储 latin1 列没有问题。

示例 2:表和列定义

CREATE TABLE t1
(
    c1 CHAR(10) CHARACTER SET latin1
) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;

这次我们有一列,它的字符集为 latin1,排序规则为默认排序规则。尽管看起来很自然,但默认排序规则并非来自表级别。相反,由于 latin1 的默认排序规则始终为 latin1_swedish_ci,因此列 c1 的排序规则为 latin1_swedish_ci(而不是 latin1_danish_ci)。

示例 3:表和列定义

CREATE TABLE t1
(
    c1 CHAR(10)
) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;

我们有一列,它使用默认字符集和默认排序规则。在这种情况下,MySQL 会检查表级别以确定列的字符集和排序规则。因此,列 c1 的字符集为 latin1,排序规则为 latin1_danish_ci

示例 4:数据库、表和列定义

CREATE DATABASE d1
    DEFAULT CHARACTER SET latin2 COLLATE latin2_czech_cs;
USE d1;
CREATE TABLE t1
(
    c1 CHAR(10)
);

我们创建一个列,没有指定它的字符集和排序规则。我们也没有在表级别指定字符集和排序规则。在这种情况下,MySQL 会检查数据库级别以确定表设置,这些设置随后会成为列设置。因此,列 c1 的字符集为 latin2,排序规则为 latin2_czech_cs