Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  The INFORMATION_SCHEMA COLUMNS Table

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不同,SELECTCOLUMNS表中不具有自动排序。

  • COLUMN_DEFAULT

    列的默认值。如果列有显式的NULL默认值,或者列定义中没有DEFAULT子句,这个值为NULL

  • IS_NULLABLE

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

  • 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,则该列是主键或是多列主键的一部分。

    • 如果COLUMN_KEYUNI,则该列是唯一索引的第一列。 (唯一索引允许多个空值,但可以通过检查Null 列来确定该列是否允许空值。)

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

    如果一个表中的某一列对应多个COLUMN_KEY值,COLUMN_KEY将显示优先级最高的那个,在顺序中是PRIUNIMUL

    一个UNIQUE索引可能显示为PRI,如果它不能包含NULL值,并且表中没有PRIMARY KEY。一个UNIQUE索引也可能显示为MUL,如果几个列组成一个复合UNIQUE索引;虽然这些列的组合是唯一的,但是每个列仍然可以包含多个给定的值。

  • EXTRA

    关于某一列的任何额外信息。该值在以下情况下非空:

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

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

    • STORED GENERATEDVIRTUAL GENERATED,对于生成列。

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

  • PRIVILEGES

    您对该列的权限。

  • COLUMN_COMMENT

    列定义中的任何注释。

  • GENERATION_EXPRESSION

    对于生成的列,显示用来计算列值的表达式。非生成列为空。关于生成列,请见第15.1.20.8节,“CREATE TABLE and Generated Columns”

  • SRS_ID

    这值适用于空间列。它包含了存储在该列中的值的空间参考系统的SRID值。见第13.4.1节,“Spatial Data Types”第13.4.5节,“Spatial Reference System Support”。该值为NULL对于非空间列和没有SRID属性的空间列。

  • 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 Statement”。以下语句几乎等价:

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节,“Generated Invisible Primary Keys”