charset-table.md 1.6 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
### 10.3.4 表格字符集和排序规则

每个表都有一个表字符集和一个表排序规则。这[`创建表`](create-table.html)[`更改表`](alter-table.html)语句具有用于指定表字符集和排序规则的可选子句:

```
CREATE TABLE tbl_name (column_list)
    [[DEFAULT] CHARACTER SET charset_name]
    [COLLATE collation_name]]

ALTER TABLE tbl_name
    [[DEFAULT] CHARACTER SET charset_name]
    [COLLATE collation_name]
```

例子:

```
CREATE TABLE t1 ( ... )
CHARACTER SET latin1 COLLATE latin1_danish_ci;
```

MySQL 以下列方式选择表字符集和排序规则:

-   如果两者`字符集 *`字符集名称`*``整理 *`collat​​ion_name`*`已指定,字符集*`字符集名称`*和整理*`collat​​ion_name`*被使用。

-   如果`字符集 *`字符集名称`*`没有指定`整理`, 字符集*`字符集名称`*并使用其默认排序规则。要查看每个字符集的默认排序规则,请使用[`显示字符集`](show-character-set.html)声明或查询`INFORMATION_SCHEMA` [`CHARACTER_SETS`](information-schema-character-sets-table.html)桌子。

-   如果`整理 *`collat​​ion_name`*`没有指定`字符集`, 与相关的字符集*`collat​​ion_name`*和整理*`collat​​ion_name`*被使用。

-   否则(两者都不`字符集`也不`整理`指定),使用数据库字符集和排序规则。

    如果未在单个列定义中指定列字符集和排序规则,则表字符集和排序规则将用作列定义的默认值。表字符集和排序规则是 MySQL 的扩展;标准 SQL 中没有这样的东西。