文档主页
MySQL 8.4 参考手册
相关文档 下载本手册

MySQL 8.4 参考手册  /  ...  /  INFORMATION_SCHEMA COLUMNS 表

28.3.8 INFORMATION_SCHEMA COLUMNS 表

COLUMNS 表提供了表中列的信息。相关的 ST_GEOMETRY_COLUMNS 表提供了存储空间数据的表列的信息。参见 第 28.3.35 节“INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS 表”

COLUMNS 表包含以下列:

  • TABLE_CATALOG

    包含该列的表所属的目录的名称。该值始终为 def

  • TABLE_SCHEMA

    包含该列的表所属的模式(数据库)的名称。

  • TABLE_NAME

    包含该列的表的名称。

  • COLUMN_NAME

    列的名称。

  • ORDINAL_POSITION

    列在表中的位置。ORDINAL_POSITION 是必需的,因为您可能需要使用 ORDER BY ORDINAL_POSITION。与 SHOW COLUMNS 不同,从 COLUMNS 表中 SELECT 数据不会自动排序。

  • COLUMN_DEFAULT

    列的默认值。如果该列的显式默认值为 NULL,或者列定义中不包含 DEFAULT 子句,则此值为 NULL

  • IS_NULLABLE

    列的可空性。如果该列可以存储 NULL 值,则该值为 YES,否则为 NO

  • DATA_TYPE

    列数据类型。

    DATA_TYPE 值仅为类型名称,不包含其他信息。COLUMN_TYPE 值包含类型名称和可能的其他信息,例如精度或长度。

  • CHARACTER_MAXIMUM_LENGTH

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

  • CHARACTER_OCTET_LENGTH

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

  • NUMERIC_PRECISION

    对于数值列,数值精度。

  • NUMERIC_SCALE

    对于数值列,数值刻度。

  • DATETIME_PRECISION

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

  • CHARACTER_SET_NAME

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

  • COLLATION_NAME

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

  • COLUMN_TYPE

    列数据类型。

    DATA_TYPE 值仅为类型名称,不包含其他信息。COLUMN_TYPE 值包含类型名称和可能的其他信息,例如精度或长度。

  • COLUMN_KEY

    该列是否已编制索引

    • 如果 COLUMN_KEY 为空,则该列要么未编制索引,要么仅作为多列非唯一索引中的辅助列编制索引。

    • 如果 COLUMN_KEYPRI,则该列是 PRIMARY KEY 或多列 PRIMARY KEY 中的一列。

    • 如果 COLUMN_KEYUNI,则该列是 UNIQUE 索引的第一列。(UNIQUE 索引允许多个 NULL 值,但您可以通过检查 Null 列来判断该列是否允许 NULL)。

    • 如果 COLUMN_KEYMUL,则该列是非唯一索引的第一列,在该索引中,该列中允许多次出现给定值。

    如果多个 COLUMN_KEY 值适用于表的给定列,则 COLUMN_KEY 将按照 PRIUNIMUL 的顺序显示优先级最高的值。

    如果 UNIQUE 索引不能包含 NULL 值,并且表中没有 PRIMARY KEY,则它可能会显示为 PRI。如果多列构成复合 UNIQUE 索引,则 UNIQUE 索引可能会显示为 MUL;尽管列的组合是唯一的,但每列仍然可以包含给定值的多次出现。

  • EXTRA

    有关给定列的任何其他可用信息。在以下情况下,该值不为空:

    • 对于具有 AUTO_INCREMENT 属性的列,为 auto_increment

    • 对于具有 ON UPDATE CURRENT_TIMESTAMP 属性的 TIMESTAMPDATETIME 列,为 on update CURRENT_TIMESTAMP

    • 对于生成的列,为 STORED GENERATEDVIRTUAL GENERATED

    • 对于具有表达式默认值的列,为 DEFAULT_GENERATED

  • PRIVILEGES

    您对该列拥有的权限。

  • COLUMN_COMMENT

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

  • GENERATION_EXPRESSION

    对于生成的列,显示用于计算列值的表达式。对于非生成列,则为空。有关生成列的信息,请参阅第 15.1.20.8 节“CREATE TABLE 和生成列”

  • SRS_ID

    此值适用于空间列。它包含列 SRID 值,该值指示存储在列中的值的空間参照系。请参阅第 13.4.1 节“空间数据类型”第 13.4.5 节“空间参照系支持”。对于非空间列和没有 SRID 属性的空间列,该值为 NULL

备注

  • SHOW COLUMNS 中,Type 显示包含来自多个不同 COLUMNS 列的值。

  • CHARACTER_OCTET_LENGTH 应该与 CHARACTER_MAXIMUM_LENGTH 相同,但多字节字符集除外。

  • CHARACTER_SET_NAME 可以从 COLLATION_NAME 派生。例如,如果您说 SHOW FULL COLUMNS FROM t,并且您在 COLLATION_NAME 列中看到值 utf8mb4_swedish_ci,则字符集是第一个下划线之前的内容:utf8mb4

SHOW COLUMNS 语句中也提供了列信息。请参阅第 15.7.7.6 节“SHOW COLUMNS 语句”。以下语句几乎等效

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']

默认情况下,此表中会显示有关生成的不可见主键列的信息。您可以通过设置 show_gipk_in_create_table_and_information_schema = OFF 来隐藏此类信息。有关更多信息,请参阅第 15.1.20.11 节“生成的不可见主键”