### 28.3.8 INFORMATION_SCHEMA COLUMNS 表

2024年 6月 18日 63.3k 0

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,表SELECTCOLUMNS没有自动排序。

  • 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_KEYPRI,则该列是 ,PRIMARY KEY或者是多列中的一列PRIMARY KEY
    • 如果COLUMN_KEYUNI,则该列是索引的第一列UNIQUE。( UNIQUE索引允许多个 值,但您可以通过检查 列来NULL判断列是否允许。) NULL``Null
    • 如果COLUMN_KEYMUL,则该列是非唯一索引的第一列,其中允许在列中多次出现给定值。

    COLUMN_KEY如果表的某一列适用 多个值,COLUMN_KEY则按PRIUNI、的顺序显示优先级最高的值MUL

    索引UNIQUE可能显示为 PRI无法包含 值,并且表中 NULL没有值 。索引可能显示为 多个列组成复合 索引;尽管列的组合是唯一的,但每个列仍可容纳给定值的多次出现。 PRIMARY KEY``UNIQUE``MUL``UNIQUE

  • EXTRA

    关于给定列的任何其他可用信息。在以下情况下,该值为非空:

    • auto_increment对于具有该AUTO_INCREMENT属性的列。
    • on update CURRENT_TIMESTAMP或 具有该 属性 的列TIMESTAMPDATETIMEON UPDATE CURRENT_TIMESTAMP
    • STORED GENERATEDVIRTUAL GENERATED生成的列。
    • DEFAULT_GENERATED对于具有表达式默认值的列。
  • PRIVILEGES

    您对该列拥有的权限。

  • COLUMN_COMMENT

    列定义中包含的任何注释。

  • GENERATION_EXPRESSION

    对于生成的列,显示用于计算列值的表达式。非生成的列为空。有关生成的列的信息,请参阅 第 15.1.20.8 节“CREATE TABLE 和生成的列”。

  • SRS_ID

    此值适用于空间列。它包含 SRID指示列中存储的值的空间参考系统的列值。请参见 第 13.4.1 节“空间数据类型”和 第 13.4.5 节“空间参考系统支持”。该值适用 NULL于非空间列和没有属性的空间列SRID

笔记

  • 在 中SHOW COLUMNSType显示包括来自几个不同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 节“生成的不可见主键”。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论