Documentation Home

10.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排序规则的列。定义是明确的,所以这很简单。latin1 请注意,在表中存储列没有问题latin2

示例 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(not latin1_danish_ci)。

示例 3:表和列定义

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

我们有一个带有默认字符集和默认排序规则的列。在这种情况下,MySQL 检查表级别以确定列字符集和排序规则。因此,列的字符集c1latin1,其排序规则是 latin1_danish_ci

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

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

我们创建一个列而不指定其字符集和排序规则。我们也没有在表级别指定字符集和排序规则。在这种情况下,MySQL 检查数据库级别以确定表设置,此后成为列设置。)因此,列的字符集c1latin2,其排序规则是 latin2_czech_ci