### 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`.
