5.COLUMNS

mac2022-06-30  89

5. COLUMNS

表COLUMNS提供表中列的信息。

INFORMATION_SCHEMA NameSHOW NameRemarksTABLE_CATALOGTABLE_SCHEMATABLE_NAMECOLUMN_NAMEFieldORDINAL_POSITIONsee notesCOLUMN_DEFAULTDefaultIS_NULLABLENullDATA_TYPETypeCHARACTER_MAXIMUM_LENGTHTypeCHARACTER_OCTET_LENGTHNUMERIC_PRECISIONTypeNUMERIC_SCALETypeDATETIME_PRECISIONTypeCHARACTER_SET_NAMECOLLATION_NAMECollationCOLUMN_TYPETypeMySQL extensionCOLUMN_KEYKeyMySQL extensionEXTRAExtraMySQL extensionPRIVILEGESPrivilegesMySQL extensionCOLUMN_COMMENTCommentMySQL extensionGENERATION_EXPRESSION

表COLUMNS有以下列:

TABLE_CATALOG:包含该列的表所属的目录的名称。 该值始终为def。TABLE_SCHEMA:包含该列的表所属的schema(数据库)的名称。TABLE_NAME:包含该列的表的名称。COLUMN_NAME:列名称ORDINAL_POSITION:表中列的位置。 ORDINAL_POSITION是必要的,因为你可能想说ORDER BY ORDINAL_POSITION。 与SHOW COLUMNS不同,COLUMNS表中的SELECT没有自动排序。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,则该列是UNIQUE索引的第一列。 (UNIQUE索引允许多个NULL值,但您可以通过检查Null列来判断该列是否允许NULL。)如果COLUMN_KEY是MUL,则该列是非唯一索引的第一列,其中在列中允许多次出现给定值。

如果多个COLUMN_KEY值应用于表的给定列,则COLUMN_KEY按PRI,UNI,MUL的顺序显示具有最高优先级的值。

如果UNIQUE索引不包含NULL值并且表中没有PRIMARY KEY,则它可以显示为PRI。 如果多个列形成复合UNIQUE索引,则UNIQUE索引可以显示为MUL; 虽然列的组合是唯一的,但每列还是会有重复值出现。

EXTRA:关于指定列的任何其他可用信息。 在这些情况下,该值是非空的:

auto_increment用于具有AUTO_INCREMENT属性的列。更新CURRENT_TIMESTAMP用于具有ON UPDATE CURRENT_TIMESTAMP属性的TIMESTAMP或DATETIME列。生成的列的VIRTUAL GENERATED或VIRTUAL STORED。

PRIVILEGES:您对该列的权限。

COLUMN_COMMENT:列定义中包含的任何注释。GENERATION_EXPRESSION:对于生成的列,显示用于计算列值的表达式。 为非生成列清空。 有关生成的列的信息,请参见“创建表和生成的列”。 CREATE TABLE triangle ( sidea DOUBLE, sideb DOUBLE, sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb)) ); INSERT INTO triangle (sidea, sideb) VALUES(1,1),(3,4),(6,8); mysql> SELECT * FROM triangle; +-------+-------+--------------------+ | sidea | sideb | sidec | +-------+-------+--------------------+ | 1 | 1 | 1.4142135623730951 | | 3 | 4 | 5 | | 6 | 8 | 10 | +-------+-------+--------------------+

注意

在SHOW COLUMNS中,Type显示包含来自多个不同COLUMNS列的值。

除多字节字符集外,CHARACTER_OCTET_LENGTH应与CHARACTER_MAXIMUM_LENGTH相同。

CHARACTER_SET_NAME可以来自COLLATION_NAME。 例如,如果您说显示来自t的全部列,并且您在COLLATION_NAME列中看到latin1_swedish_ci的值,则字符集就在第一个下划线之前:latin1。

示例

mysql> select COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT from information_schema.columns where table_schema='test' and table_name = 'account'; +-------------+-----------+-------------+----------------+ | COLUMN_NAME | DATA_TYPE | IS_NULLABLE | COLUMN_DEFAULT | +-------------+-----------+-------------+----------------+ | id | int | YES | NULL | | name | char | YES | NULL | | balance | int | YES | NULL | +-------------+-----------+-------------+----------------+ 3 rows in set (0.01 sec) mysql> show columns from test.account; +---------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+----------+------+-----+---------+-------+ | id | int(11) | YES | MUL | NULL | | | name | char(30) | YES | | NULL | | | balance | int(11) | YES | | NULL | | +---------+----------+------+-----+---------+-------+

【注意】 INFORMATION_SCHEMA.COLUMNS不包含有关临时表的信息。要获取临时表列信息,必须使用SHOW COLUMNS。您还可以使用SHOW CREATE TABLE或MySQL 5.7.1,INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO。

转载于:https://www.cnblogs.com/wanbin/p/9514645.html

最新回复(0)