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实例下所有的数据库名称以及每个数据库下所有的表名称。以上就是本文所介绍的全部内容。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程