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”。