MySQL 如何在MySQL中显示所有数据库,并为每个数据库显示所有表?

MySQL 如何在MySQL中显示所有数据库,并为每个数据库显示所有表?

MySQL 如何在MySQL中显示所有数据库,并为每个数据库显示所有表?

在MySQL中,有时候我们需要查看当前MySQL实例中都有哪些数据库,以及每个数据库下都有哪些表。本文将介绍如何使用MySQL自带的命令来实现这个功能。

阅读更多:MySQL 教程

显示所有数据库

要显示所有的数据库,我们可以使用SHOW DATABASES命令。

SHOW DATABASES;

这个命令会返回一个结果集,其中包含了当前MySQL实例下所有的数据库名。

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| testdb |

| testdb2 |

+--------------------+

在这个结果集中,每一行都代表一个数据库。如果我们想要对这个结果集进行排序,可以使用ORDER BY子句,比如:

SHOW DATABASES ORDER BY Database DESC;

这个命令会按照数据库名倒序排序。

显示所有表

要显示某个数据库中所有的表,我们需要先选择这个数据库,然后使用SHOW TABLES命令。

USE testdb;

SHOW TABLES;

这个命令会返回一个结果集,其中包含了testdb数据库下所有的表名。

+------------------+

| Tables_in_testdb |

+------------------+

| customers |

| orders |

+------------------+

在这个结果集中,每一行都代表一个表。如果我们想要对这个结果集进行排序,可以使用ORDER BY子句,比如:

SHOW TABLES ORDER BY Tables_in_testdb ASC;

这个命令会按照表名升序排序。

显示所有数据库及其表

要显示当前MySQL实例下所有的数据库名称以及每个数据库下所有的表名,我们可以先使用SHOW DATABASES命令,然后使用一个循环来遍历所有的数据库,对于每个数据库,使用USE命令来选择它,然后用SHOW TABLES命令来显示这个数据库下所有的表名。

以下是一个示例代码:

SET @query = '';

SELECT GROUP_CONCAT(query SEPARATOR '\n') INTO @query

FROM (

SELECT CONCAT('USE `', Database, '`;') AS `query`, 1 AS `sort_order`

FROM INFORMATION_SCHEMA.SCHEMATA

WHERE SCHEMA_NAME NOT IN ('information_schema', 'mysql', 'performance_schema')

ORDER BY SCHEMA_NAME

UNION ALL

SELECT CONCAT('SELECT \'', Database, '\' AS `Database`, \'', Table_name, '\' AS `Table` FROM `', Table_name, '`;') AS `query`, 2 AS `sort_order`

FROM information_schema.`TABLES`

WHERE TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema')

ORDER BY TABLE_SCHEMA

) AS t

ORDER BY sort_order, query;

PREPARE stmt FROM @query;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

这个代码使用了MySQL的系统表INFORMATION_SCHEMA.SCHEMATA和information_schema.TABLES来获取当前MySQL实例下所有的数据库名称和每个数据库下所有的表名称。其中,INFORMATION_SCHEMA.SCHEMATA表包含了所有的数据库列表及其相关信息,information_schema.TABLES表包含了所有的表列表及其相关信息。通过UNION ALL将两个列表合并,得到一个结果集。通过GROUP_CONCAT函数将这个结果集中所有的查询语句拼接起来,然后使用PREPARE和EXECUTE语句执行这个查询语句,即可得到所有的数据库及其表信息。

结论

通过使用SHOW DATABASES、SHOW TABLES和MySQL的系统表INFORMATION_SCHEMA.SCHEMATA和information_schema.TABLES,我们可以很容易地显示当前MySQL实例下所有的数据库名称以及每个数据库下所有的表名称。以上就是本文所介绍的全部内容。

相关内容

中国电信珠海分公司怎么样?
asiasports365

中国电信珠海分公司怎么样?

07-22 ☯ 9146
mate的中文翻译
asiasports365

mate的中文翻译

08-18 ☯ 7149
四川麻将怎么算番 算番技巧介绍
asiasports365

四川麻将怎么算番 算番技巧介绍

09-08 ☯ 1391