【发布时间】:2016-05-04 14:10:47
【问题描述】:
我想列出我所有的自定义数据库:
SELECT `SCHEMA_NAME` AS 'Database',
`DEFAULT_CHARACTER_SET_NAME` AS 'Character Set',
`DEFAULT_COLLATION_NAME` AS 'Collation'
FROM `information_schema`.`SCHEMATA`
WHERE `SCHEMA_NAME` NOT IN ('information_schema','mysql','performance_schema')
ORDER BY `SCHEMA_NAME` ASC
但我想包括每个数据库中的表数:
SELECT `TABLE_SCHEMA`, COUNT(*)
FROM `information_schema`.`TABLES`
WHERE `TABLE_SCHEMA` NOT IN ('information_schema','mysql','performance_schema')
GROUP BY `TABLE_SCHEMA`
...在一个表中:
[
0 => [ 'Database'=>'customDb1', ..., 'Table Count'=>3 ],
1 => [ 'Database'=>'customDb2', ..., 'Table Count'=>8 ],
2 => [ 'Database'=>'customDb3', ..., 'Table Count'=>0 ]
]
我知道运行第一个查询,在 PHP 中循环遍历每个数据库,然后运行第二个查询比使用表 JOIN 之类的东西效率低得多,但我只是没有掌握 JOIN 语法。 Lynda tutorial 我只是通过这个(可能)复杂的语言部分,我尝试的一切都只是抛出错误或糟糕的结果。
我确信这是创建 MySQL 数据库接口的开发人员的常见查询。如何使用仅 MySQL 查询将表数添加到我的数据库列表中?
【问题讨论】: