MYSQL:获取所有表和此表列

时间:2015-12-01 15:18:51

标签: mysql sql database

要为我的数据库自动完成逻辑,我需要查询数据库中的所有表,还需要查询每个表的单个请求列。

所以我们假设我有2个表:Table1T2Table1有列:i d, type, sizeT2id, weight, length 。我需要像

这样的东西
[table1, id]
[table1, type]
[table1, size]
[T2, Id]
[T2, weight]
[T2, length]

如何通过单一查询获取此信息

2 个答案:

答案 0 :(得分:2)

我认为这应该是问题的答案:

select T.Table_name, C.column_name from information_schema.Tables AS T
LEFT JOIN information_schema.COLUMNS as C
ON T.Table_name = C.Table_name
where T.TABLE_SCHEMA = <YOUR_SCHEMA (name of db)>
order by C.ordinal_position

答案 1 :(得分:1)

如果您有权查询information_schema,您可以这样做:

SELECT TABLE_NAME, COLUMN_NAME 
FROM information_schema.columns 
WHERE TABLE_SCHEMA='<name_of_your_schema>'

而且,你也可以更深入地通过外键依赖来命令它们:

SELECT col.TABLE_NAME, col.COLUMN_NAME 
FROM information_schema.columns col
LEFT JOIN information_schema.key_column_usage kcu 
    ON col.COLUMN_NAME=kcu.COLUMN_NAME
RIGHT JOIN information_schema.tables t
    ON t.TABLE_NAME=kcu.TABLE_NAME
WHERE col.TABLE_SCHEMA='<name_of_your_schema>' GROUP BY t.TABLE_NAME ORDER BY t.TABLE_TYPE DESC, COUNT(kcu.REFERENCED_COLUMN_NAME) ASC;

我必须警告我没有足够多时间测试这第二个想法以保证很多,但它看起来效果很好。