MySQL Query To Return,Schema_Name,Table_NAme,Count,Size_of_Table,Primary_Key和Auto_Increment_Key

时间:2011-03-17 21:25:28

标签: mysql sql select join

我正在尝试解决另一个棘手的MySQL查询。我需要一个查询,它将在一个命令中返回以下内容:

+----------+------------------------------+-----------+-------------+----------------+--------------------+
| Database | Table_Name                   | Count     | Size        | Primary-Key    | Auto_Increment_Key |
+----------+------------------------------+-----------+-------------+----------------+--------------------+
| mydb     | account_length               |      2408 | 0.04 Mb     | account_id     | account_id         |
| mydb     | account_log                  |      1225 | 0.09 Mb     | log_id         | NULL               |

我还是MySQL新手。我已经尝试过针对information_schema的各种查询,但是无法获得一个返回我需要的数据的查询。

查询只会得到一个表的行数,它的大小以MB为单位,它是主键列,它是auto_increment键列。

我感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:3)

这样的事情会对你有所帮助:

SELECT t.table_schema, 
       t.table_name, 
       Round(( t.data_length + t.index_length ) / 1048576, 2) AS sizemb, 
       c1.column_name                                         AS primarycol, 
       c2.column_name                                         AS 
       autoincrementcol 
FROM   information_schema.tables t 
       LEFT JOIN information_schema.columns c1 
         ON t.table_schema = c1.table_schema 
            AND t.table_name = c1.table_name 
            AND c1.column_key = 'PRI' 
       LEFT JOIN information_schema.columns c2 
         ON t.table_schema = c2.table_schema 
            AND t.table_name = c2.table_name 
            AND c2.extra = 'auto_increment' 
WHERE  t.table_schema = '............'