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不同,SELECT从COLUMNS表中不具有自动排序。 -
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_KEY是PRI,则该列是主键或是多列主键的一部分。 -
如果
COLUMN_KEY是UNI,则该列是唯一索引的第一列。 (唯一索引允许多个空值,但可以通过检查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,对于具有ON UPDATE CURRENT_TIMESTAMP属性的TIMESTAMP或DATETIME列。 -
STORED GENERATED或VIRTUAL 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”。