#### 13.7.7.5 SHOW COLUMNS 语句

[](<>)[](<>)[](<>)

```
SHOW [EXTENDED] [FULL] {COLUMNS | FIELDS}
    {FROM | IN} tbl_name
    [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]
```

[`显示列`](show-columns.html)显示有关给定表中列的信息。它也适用于视图。[`显示列`](show-columns.html)仅显示您拥有某些权限的那些列的信息。

```
mysql> SHOW COLUMNS FROM City;
+-------------+----------+------+-----+---------+----------------+
| Field       | Type     | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| ID          | int(11)  | NO   | PRI | NULL    | auto_increment |
| Name        | char(35) | NO   |     |         |                |
| CountryCode | char(3)  | NO   | MUL |         |                |
| District    | char(20) | NO   |     |         |                |
| Population  | int(11)  | NO   |     | 0       |                |
+-------------+----------+------+-----+---------+----------------+
```

一个替代方案`*`tbl_name`* 从 *`数据库名称`*`语法是*`db_name.tbl_name`*.这两个语句是等价的：

```
SHOW COLUMNS FROM mytable FROM mydb;
SHOW COLUMNS FROM mydb.mytable;
```

可选的`扩展`关键字导致输出包含有关 MySQL 内部使用且用户无法访问的隐藏列的信息。

可选的`满的`关键字导致输出包含列排序规则和注释，以及您对每列的权限。

这[`喜欢`](string-comparison-functions.html#operator_like)子句（如果存在）指示要匹配的列名。这`在哪里`可以给出子句以使用更一般的条件选择行，如中所述[第 26.8 节，“SHOW 语句的扩展”](extended-show.html).

数据类型可能与您期望它们基于的不同[`创建表`](create-table.html)语句，因为 MySQL 有时会在您创建或更改表时更改数据类型。发生这种情况的条件在[第 13.1.20.7 节，“静默列规范更改”](silent-column-changes.html).

[`显示列`](show-columns.html)为每个表列显示以下值：

-   `场地`

    列的名称。

-   `类型`

    列数据类型。

-   `整理`

    非二进制字符串列的排序规则，或`空值`对于其他列。仅当您使用`满的`关键词。

-   `空值`

    列可空性。值为`是的`如果`空值`值可以存储在列中，`不`如果不。

-   `钥匙`

    列是否被索引：

    -   如果`钥匙`为空，则该列没有索引，或者仅作为多列、非唯一索引中的辅助列进行索引。

    -   如果`钥匙`是`PRI`，该列是`首要的关键`或者是多列中的列之一`首要的关键`.

    -   如果`钥匙`是`统一`, 该列是 a 的第一列`独特`指数。（一种`独特`索引允许多个`空值`值，但您可以判断该列是否允许`空值`通过检查`空值`场地。）

    -   如果`钥匙`是`穆尔`，该列是非唯一索引的第一列，其中允许在该列中多次出现给定值。

        如果超过一个`钥匙`值适用于表的给定列，`钥匙`按顺序显示具有最高优先级的那个`PRI`, `统一`, `穆尔`.

        一种`独特`索引可以显示为`PRI`如果它不能包含`空值`价值观，没有`首要的关键`在表中。一种`独特`索引可能显示为`穆尔`如果几列形成一个组合`独特`指数;尽管列的组合是唯一的，但每列仍然可以包含给定值的多次出现。

-   `默认`

    列的默认值。这是`空值`如果该列具有显式默认值`空值`，或者如果列定义包含 no`默认`条款。

-   `额外的`

    有关给定列的任何其他可用信息。在这些情况下，该值是非空的：

    [](<>)

    -   `自动递增`对于具有`自动递增`属性。

    -   `在更新 CURRENT_TIMESTAMP`为了[`时间戳`](datetime.html)要么[`约会时间`](datetime.html)具有`ON UPDATE CURRENT_TIMESTAMP`属性。

    -   `虚拟生成`要么`存储生成`对于生成的列。

    -   `DEFAULT_GENERATED`对于具有表达式默认值的列。

-   `特权`

    您对该列的权限。仅当您使用`满的`关键词。

-   `评论`

    列定义中包含的任何注释。仅当您使用`满的`关键词。

    表列信息也可从`INFORMATION_SCHEMA` [`列`](information-schema-columns-table.html)桌子。看[第 26.3.8 节，“信息\_SCHEMA 列表”](information-schema-columns-table.html).有关隐藏列的扩展信息只能使用`显示扩展列`;它不能从[`列`](information-schema-columns-table.html)桌子。

    您可以使用[**mysqlshow*`数据库名称`* *`tbl_name`***](mysqlshow.html)命令。

    这[`描述`](describe.html)声明提供的信息类似于[`显示列`](show-columns.html).看[第 13.8.1 节，“DESCRIBE 语句”](describe.html).

    这[`显示创建表`](show-create-table.html),[`显示表状态`](show-table-status.html)， 和[`显示索引`](show-index.html)语句还提供有关表的信息。看[第 13.7.7 节，“显示语句”](show.html).
