zoukankan      html  css  js  c++  java
  • MySQL--INFORMATION_SCHEMA COLUMNS表

    在程序中,若想要动态地得到某一个表的具体信息,就使用到了MySQL 中的 INFORMATION_SCHEMA 信息数据库,而它又包含很多表,见下:

    INFORMATION_SCHEMA SCHEMATA表
    INFORMATION_SCHEMA TABLES表
    INFORMATION_SCHEMA COLUMNS表
    INFORMATION_SCHEMA STATISTICS
    INFORMATION_SCHEMA USER_PRIVILEGES表
    INFORMATION_SCHEMA SCHEMA_PRIVILEGES表
    INFORMATION_SCHEMA TABLE_PRIVILEGES表
    INFORMATION_SCHEMA COLUMN_PRIVILEGES表
    INFORMATION_SCHEMA CHARACTER_SETS表
    INFORMATION_SCHEMA COLLATIONS表
    INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY表
    INFORMATION_SCHEMA TABLE_CONSTRAINTS表
    INFORMATION_SCHEMA KEY_COLUMN_USAGE表
    INFORMATION_SCHEMA ROUTINES表
    INFORMATION_SCHEMA VIEWS表
    INFORMATION_SCHEMA TRIGGERS表

    其中的 COLUMNS 表给出了某一个表中的具体的列信息:我们在 'test' 库中建立 'documents' 表,语句如下:

    CREATE TABLE `documents` (                           
                 `id` int(11) NOT NULL auto_increment,              
                 `group_id` int(11) NOT NULL,                       
                 `group_id2` int(11) NOT NULL,                      
                 `date_added` datetime NOT NULL,                    
                 `title` varchar(255) NOT NULL,                     
                 `content` text NOT NULL,                           
                 PRIMARY KEY  (`id`)                                
               ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=gbk

    字段以及索引信息为:

    /*字段信息 - test.documents*/
    -----------------------------
     
    Field       Type          Collation       Null    Key     Default  Extra           Privileges                       Comment
    ----------  ------------  --------------  ------  ------  -------  --------------  -------------------------------  -------
    id          int(11)       (NULL)          NO      PRI     (NULL)   auto_increment  select,insert,update,references        
    group_id    int(11)       (NULL)          NO                                       select,insert,update,references        
    group_id2   int(11)       (NULL)          NO                                       select,insert,update,references        
    date_added  datetime      (NULL)          NO                                       select,insert,update,references        
    title       varchar(255)  gbk_chinese_ci  NO                                       select,insert,update,references        
    content     text          gbk_chinese_ci  NO                                       select,insert,update,references        
     
    /*索引信息 - test.documents*/
    -----------------------------
     
    Table      Non_unique  Key_name  Seq_in_index  Column_name  Collation  Cardinality  Sub_part  Packed  Null    Index_type  Comment
    ---------  ----------  --------  ------------  -----------  ---------  -----------  --------  ------  ------  ----------  -------
    documents           0  PRIMARY              1  id           A                    4    (NULL)  (NULL)          BTREE
      

    好啦!建表结束!先来了解一下 INFORMATION_SCHEMA COLUMNS 表:

    下面我们开始了解它!键入 SQL 语句:

    SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
      FROM INFORMATION_SCHEMA.COLUMNS
      WHERE table_name = 'documents'

    结果如下,可以对照我们刚开始的建表语句以及字段信息:

    当然,还可以参照如下格式的 SQL 语句来查看其他字段的查询信息:

    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 语句和它的异同:键入 SQL 语句:

    SHOW COLUMNS
      FROM `documents`

    结果如下:

    SHOW 语句的基本格式为:

    SHOW COLUMNS
      FROM tbl_name
      [FROM db_name]
      [LIKE wild]

    更多详细的内容,请参看 MySQL 手册。

    人的一生应该这样度过:当他回首往事的时候,不会因为虚度年华而悔恨,也不会因为碌碌无为而羞愧。
     
    查询mysql数据库中一个拥有65个字段的表的数据,而且还得将字段的注释查出来,当时看到这个头就大了,不知道如何下手,(不过我从没想过将 65个字段全写在select后面一遍,这简直太惨绝人寰了)   后来得到了同事的帮助,教我使用information_schema(mysql的架构信息库),简单的一个sql就解决了这个问题,大致是这样的:

                SELECT COLUMN_NAME AS '字段名',COLUMN_COMMENT AS '字段注释',DATA_TYPE AS '字段类型'    FROM information_schema.COLUMNS   

                WHERE TABLE_SCHEMA='database_name' AND TABLE_NAME='table_name' AND COLUMN_COMMENT !=''  AND COLUMN_COMMENT != '未使用'

    这样就解决了大量字段值的查询问题。
     
     
     
  • 相关阅读:
    Shared Memory in Windows NT
    Layered Memory Management in Win32
    软件项目管理的75条建议
    Load pdbs when you need it
    Stray pointer 野指针
    About the Rebase and Bind operation in the production of software
    About "Serious Error: No RTTI Data"
    Realizing 4 GB of Address Space[MSDN]
    [bbk4397] 第1集 第一章 AMS介绍
    [bbk3204] 第67集 Chapter 17Monitoring and Detecting Lock Contention(00)
  • 原文地址:https://www.cnblogs.com/wolfplan/p/4944621.html
Copyright © 2011-2022 走看看