该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
,表SELECT
中COLUMNS
没有自动排序。 -
COLUMN_DEFAULT
列的默认值。
NULL
如果列具有显式默认值NULL
,或者列定义不包含DEFAULT
子句,则为该默认值。 -
IS_NULLABLE
列是否为空。该值为
YES
是否NULL
可以将值存储在列中,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_KEY
是PRI
,则该列是 ,PRIMARY KEY
或者是多列中的一列PRIMARY KEY
。 - 如果
COLUMN_KEY
为UNI
,则该列是索引的第一列UNIQUE
。(UNIQUE
索引允许多个 值,但您可以通过检查 列来NULL
判断列是否允许。)NULL``Null
- 如果
COLUMN_KEY
为MUL
,则该列是非唯一索引的第一列,其中允许在列中多次出现给定值。
COLUMN_KEY
如果表的某一列适用 多个值,COLUMN_KEY
则按PRI
、UNI
、的顺序显示优先级最高的值MUL
。索引
UNIQUE
可能显示为PRI
无法包含 值,并且表中NULL
没有值 。索引可能显示为 多个列组成复合 索引;尽管列的组合是唯一的,但每个列仍可容纳给定值的多次出现。PRIMARY KEY``UNIQUE``MUL``UNIQUE
- 如果
-
EXTRA
关于给定列的任何其他可用信息。在以下情况下,该值为非空:
auto_increment
对于具有该AUTO_INCREMENT
属性的列。on update CURRENT_TIMESTAMP
或 具有该 属性 的列TIMESTAMP
。DATETIME
ON UPDATE CURRENT_TIMESTAMP
STORED GENERATED
或VIRTUAL GENERATED
生成的列。DEFAULT_GENERATED
对于具有表达式默认值的列。
-
PRIVILEGES
您对该列拥有的权限。
-
COLUMN_COMMENT
列定义中包含的任何注释。
-
GENERATION_EXPRESSION
对于生成的列,显示用于计算列值的表达式。非生成的列为空。有关生成的列的信息,请参阅 第 15.1.20.8 节“CREATE TABLE 和生成的列”。
-
SRS_ID
此值适用于空间列。它包含
SRID
指示列中存储的值的空间参考系统的列值。请参见 第 13.4.1 节“空间数据类型”和 第 13.4.5 节“空间参考系统支持”。该值适用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.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']
在 MySQL 8.0.30 及更高版本中,默认情况下,有关生成的不可见主键列的信息在此表中可见。 您可以通过设置来隐藏此类信息 show_gipk_in_create_table_and_information_schema = OFF
。 有关更多信息,请参见 第 15.1.20.11 节“生成的不可见主键”。