查看表描述的命令 desc table_name 返回的是什么? 是一个结果集么?不能用 select * from (desc table_name), 那该怎么拿到表描述信息呢?(意思是我不是用来自己查看的,而是想取得所有表描述信息的内容, 包括主键值,列默认值等)如果不能直接从 desc table_name 中取值, 那该怎么取得完整的表描述信息用 ResultSetMetaData ,也貌似没有判断其是否是主键或者得到列默认值的方法?还是说需要那个系统表的辅助查询?希望大家帮帮忙~

解决方案 »

  1.   

    查看表描述的命令 desc table_name 返回的是一个结果集(记录吉) 您可以像执行
    select * from mysql.user这样处理返回的结果哈!
      

  2.   

    一个结果集,如果你在程序中则可以完全按select * from ...类似的方法处理这个结果集。
      

  3.   

    首先,如上所述,可以直接通过DESC进行处理,另外你还可以通过数据字典得到类似信息。mysql> desc information_schema.tables;
    +-----------------+---------------------+------+-----+---------+-------+
    | Field           | Type                | Null | Key | Default | Extra |
    +-----------------+---------------------+------+-----+---------+-------+
    | TABLE_CATALOG   | varchar(512)        | YES  |     | NULL    |       |
    | TABLE_SCHEMA    | varchar(64)         | NO   |     |         |       |
    | TABLE_NAME      | varchar(64)         | NO   |     |         |       |
    | TABLE_TYPE      | varchar(64)         | NO   |     |         |       |
    | ENGINE          | varchar(64)         | YES  |     | NULL    |       |
    | VERSION         | bigint(21) unsigned | YES  |     | NULL    |       |
    | ROW_FORMAT      | varchar(10)         | YES  |     | NULL    |       |
    | TABLE_ROWS      | bigint(21) unsigned | YES  |     | NULL    |       |
    | AVG_ROW_LENGTH  | bigint(21) unsigned | YES  |     | NULL    |       |
    | DATA_LENGTH     | bigint(21) unsigned | YES  |     | NULL    |       |
    | MAX_DATA_LENGTH | bigint(21) unsigned | YES  |     | NULL    |       |
    | INDEX_LENGTH    | bigint(21) unsigned | YES  |     | NULL    |       |
    | DATA_FREE       | bigint(21) unsigned | YES  |     | NULL    |       |
    | AUTO_INCREMENT  | bigint(21) unsigned | YES  |     | NULL    |       |
    | CREATE_TIME     | datetime            | YES  |     | NULL    |       |
    | UPDATE_TIME     | datetime            | YES  |     | NULL    |       |
    | CHECK_TIME      | datetime            | YES  |     | NULL    |       |
    | TABLE_COLLATION | varchar(32)         | YES  |     | NULL    |       |
    | CHECKSUM        | bigint(21) unsigned | YES  |     | NULL    |       |
    | CREATE_OPTIONS  | varchar(255)        | YES  |     | NULL    |       |
    | TABLE_COMMENT   | varchar(80)         | NO   |     |         |       |
    +-----------------+---------------------+------+-----+---------+-------+
    21 rows in set (0.28 sec)mysql>
      

  4.   


    怎么我用 select * from (desc table_name); 有错?
      

  5.   

    完全按select * from ...类似的方法处理这个结果集。你是如何处理select ?
    mysql_query(.. "select * form ..那就怎么处理DESCmysql_query(.."desc tablename"