该 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
,或者该列定义中没有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_KEY
是PRI
,该列是PRIMARY KEY
或是多列PRIMARY KEY
中的一列。 -
如果
COLUMN_KEY
是UNI
,该列是唯一索引的第一列。(唯一索引允许多个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 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”。