• 5. COLUMNS


    5. COLUMNS

    COLUMNS提供表中列的信息。

    INFORMATION_SCHEMA Name SHOW Name Remarks
    TABLE_CATALOG

    TABLE_SCHEMA

    TABLE_NAME

    COLUMN_NAME Field
    ORDINAL_POSITION
    see notes
    COLUMN_DEFAULT Default
    IS_NULLABLE Null
    DATA_TYPE Type
    CHARACTER_MAXIMUM_LENGTH Type
    CHARACTER_OCTET_LENGTH

    NUMERIC_PRECISION Type
    NUMERIC_SCALE Type
    DATETIME_PRECISION Type
    CHARACTER_SET_NAME

    COLLATION_NAME Collation
    COLUMN_TYPE Type MySQL extension
    COLUMN_KEY Key MySQL extension
    EXTRA Extra MySQL extension
    PRIVILEGES Privileges MySQL extension
    COLUMN_COMMENT Comment MySQL extension
    GENERATION_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。

  • 相关阅读:
    java中并发包简要分析01
    java中的集合包简要分析
    多线程学习——终结任务
    大型高并发高负载网站的系统架构
    An expression evaluator
    java公式解析器学习与开发(2)——前缀表达式
    java公式解析器学习与开发(1)
    程序员遇到bug时常见的30种反应
    图论--SCC强连通缩点--Tarjan
    图论--割边--Tarjan模板
  • 原文地址:https://www.cnblogs.com/wanbin/p/9514645.html
Copyright © 2020-2023  润新知