# 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;
在这里,我们有一个列拉丁语1
字符集和一个latin1_german1_ci
整理。定义是明确的,因此很简单。请注意,存储一个没有问题拉丁语1
列中拉丁语2
桌子。
示例 2:表和列定义
CREATE TABLE t1
(
c1 CHAR(10) CHARACTER SET latin1
) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;
这次我们有一个列拉丁语1
字符集和默认排序规则。尽管这看起来很自然,但默认排序规则并非取自表级别。相反,因为默认排序规则拉丁语1
总是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
是拉丁语1
它的排序规则是latin1_danish_ci
.
示例 4:数据库、表和列定义
CREATE DATABASE d1
DEFAULT CHARACTER SET latin2 COLLATE latin2_czech_ci;
USE d1;
CREATE TABLE t1
(
c1 CHAR(10)
);
我们创建一个列而不指定其字符集和排序规则。我们也没有在表级别指定字符集和排序规则。在这种情况下,MySQL 检查数据库级别以确定表设置,然后将其变为列设置。)因此,列的字符集c1
是拉丁语2
它的排序规则是latin2_czech_ci
.