24.5 INFORMATION_SCHEMA COLUMNStable

COLUMNStable 提供有关 table 中列的信息。

COLUMNStable 具有以下列:

  • TABLE_CATALOG

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

  • TABLE_SCHEMA

包含该列的 table 所属的架构(数据库)的名称。

  • TABLE_NAME

包含列的 table 的名称。

  • COLUMN_NAME

列的名称。

  • ORDINAL_POSITION

table 格在 table 格中的位置。 ORDINAL_POSITION是必需的,因为您可能想说ORDER BY ORDINAL_POSITION。不同于COLUMNStable 中的SHOW COLUMNSSELECT没有自动排序。

  • 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值应用于 table 的给定列,则COLUMN_KEYPRIUNIMUL的 Sequences 显示优先级最高的那个。

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

  • EXTRA

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

  • auto_increment用于具有AUTO_INCREMENT属性的列。

    • on update CURRENT_TIMESTAMPtable 示具有ON UPDATE CURRENT_TIMESTAMP属性的TIMESTAMPDATETIME列。

    • STORED GENERATEDVIRTUAL GENERATED用于生成的列。

  • PRIVILEGES

您具有该列的特权。

  • COLUMN_COMMENT

列定义中包含的任何 Comments。

  • GENERATION_EXPRESSION

对于生成的列,显示用于计算列值的 table 达式。对于未生成的列为空。有关生成的列的信息,请参见第 13.1.18.7 节“创建 table 和生成的列”

Notes

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

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

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

SHOW COLUMNS语句也提供列信息。参见第 13.7.5.5 节“ 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']