### 26.3.8 信息\_SCHEMA 列表

[](<>)

这[`列`](information-schema-columns-table.html)table 提供有关表中列的信息。相关的[`ST_GEOMETRY_COLUMNS`](information-schema-st-geometry-columns-table.html)table 提供有关存储空间数据的表列的信息。看[第 26.3.35 节，“信息\_架构 ST\_几何学\_列表”](information-schema-st-geometry-columns-table.html).

这[`列`](information-schema-columns-table.html)表有这些列：

-   `表目录`

    包含该列的表所属的目录的名称。这个值总是`定义`.

-   `TABLE_SCHEMA`

    包含该列的表所属的架构（数据库）的名称。

-   `TABLE_NAME`

    包含列的表的名称。

-   `COLUMN_NAME`

    列的名称。

-   `ORDINAL_POSITION`

    列在表中的位置。`ORDINAL_POSITION`是必要的，因为你可能想说`ORDER BY ORDINAL_POSITION`.不像[`显示列`](show-columns.html),[`选择`](select.html)来自[`列`](information-schema-columns-table.html)表没有自动排序。

-   `COLUMN_DEFAULT`

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

-   `IS_NULLABLE`

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

-   `数据类型`

    列数据类型。

    这`数据类型`value 只是类型名称，没有其他信息。这`COLUMN_TYPE`value 包含类型名称和可能的其他信息，例如精度或长度。

-   `CHARACTER_MAXIMUM_LENGTH`

    对于字符串列，以字符为单位的最大长度。

-   `CHARACTER_OCTET_LENGTH`

    对于字符串列，最大长度（以字节为单位）。

-   `NUMERIC_PRECISION`

    对于数值列，数值精度。

-   `NUMERIC_SCALE`

    对于数字列，数字刻度。

-   `DATETIME_PRECISION`

    对于时间列，小数秒精度。

-   `CHARACTER_SET_NAME`

    对于字符串列，字符集名称。

-   `COLLATION_NAME`

    对于字符串列，排序规则名称。

-   `COLUMN_TYPE`

    列数据类型。

    这`数据类型`value 只是类型名称，没有其他信息。这`COLUMN_TYPE`value 包含类型名称和可能的其他信息，例如精度或长度。

-   `COLUMN_KEY`

    列是否被索引：

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

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

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

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

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

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

-   `额外的`

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

    [](<>)

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

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

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

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

-   `特权`

    您对该列的权限。

-   `COLUMN_COMMENT`

    列定义中包含的任何注释。

-   `GENERATION_EXPRESSION`

    [](<>)

    对于生成的列，显示用于计算列值的表达式。未生成的列为空。有关生成的列的信息，请参阅[第 13.1.20.8 节，“创建表和生成的列”](create-table-generated-columns.html).

-   `SRS_ID`

    此值适用于空间列。它包含列`SRID`指示存储在列中的值的空间参考系统的值。看[第 11.4.1 节，“空间数据类型”](spatial-type-overview.html)， 和[第 11.4.5 节，“空间参考系统支持”](spatial-reference-systems.html).值为`空值`对于非空间列和没有空间列`SRID`属性。

#### 笔记

-   在[`显示列`](show-columns.html)， 这`类型`显示包括来自几个不同的值[`列`](information-schema-columns-table.html)列。

-   `CHARACTER_OCTET_LENGTH`应该是一样的`CHARACTER_MAXIMUM_LENGTH`, 多字节字符集除外。

-   `CHARACTER_SET_NAME`可以从`COLLATION_NAME`.例如，如果你说`显示来自 t 的完整列`，你在`COLLATION_NAME`列的值`utf8_swedish_ci`，字符集是第一个下划线之前的内容：`utf8`.

    列信息也可从[`显示列`](show-columns.html)陈述。看[第 13.7.7.5 节，“显示列语句”](show-columns.html).以下语句几乎是等价的：


```
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'tbl_name'
  [AND table_schema = 'db_name']
  [AND column_name LIKE 'wild']

SHOW COLUMNS
  FROM tbl_name
  [FROM db_name]
  [LIKE 'wild']
```
