该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关于给定列的任何其他可用信息。在以下情况下,该值为非空:
-
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 节“生成的不可见主键”。




