Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 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

    该列的可空性。如果该列可以存储 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,该列是唯一索引的第一列。(唯一索引允许多个 NULL 值,但您可以通过检查 Null 列来确定该列是否允许 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”。该值对于非空间列和没有 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”