Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Examples of Character Set and Collation Assignment

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