如何通过SQL查询显示所有数据库及其对应表名?
- 数据库
- 2025-09-26
- 7
在SQL中,查询所有表和对应的数据库名可以通过使用系统视图或信息模式来实现,以下是一些常用的SQL语句和方法来获取所有表的数据库名。
使用系统视图获取数据库名和表名
大多数数据库管理系统(如MySQL、PostgreSQL、SQL Server等)都提供了系统视图来查询数据库和表的信息,以下是一些示例:
MySQL
SELECT TABLE_SCHEMA AS DatabaseName, TABLE_NAME AS TableName FROM INFORMATION_SCHEMA.TABLES;
这个查询会返回当前数据库中所有表的名称和数据库名。
PostgreSQL
SELECT nspname AS DatabaseName, relname AS TableName FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind = 'r';
这个查询会返回所有表的名称和数据库名。

SQL Server
SELECT SCHEMA_NAME(schema_id) AS DatabaseName, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES;
这个查询会返回当前数据库中所有表的名称和数据库名。
使用信息模式获取数据库名和表名
除了使用系统视图,还可以使用信息模式来查询数据库和表的信息。
MySQL
SELECT DATABASE() AS DatabaseName, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES;
这个查询会返回当前数据库中所有表的名称。

PostgreSQL
SELECT nspname AS DatabaseName, relname AS TableName FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind = 'r';
这个查询会返回所有表的名称和数据库名。
SQL Server
SELECT SCHEMA_NAME(schema_id) AS DatabaseName, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES;
这个查询会返回当前数据库中所有表的名称。
以下是一个表格,归纳了不同数据库管理系统获取数据库名和表名的SQL语句:
| 数据库管理系统 | SQL语句 |
|---|---|
| MySQL | SELECT TABLE_SCHEMA AS DatabaseName, TABLE_NAME AS TableName FROM INFORMATION_SCHEMA.TABLES; |
| PostgreSQL | SELECT nspname AS DatabaseName, relname AS TableName FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind = 'r'; |
| SQL Server | SELECT SCHEMA_NAME(schema_id) AS DatabaseName, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES; |
FAQs
Q1:如何查询所有数据库中的所有表?

A1:要查询所有数据库中的所有表,可以使用以下SQL语句:
SELECT TABLE_SCHEMA AS DatabaseName, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES;
这个查询会返回所有数据库中所有表的名称。
Q2:如何查询特定数据库中的所有表?
A2:要查询特定数据库中的所有表,可以使用以下SQL语句:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'YourDatabaseName';
将YourDatabaseName替换为要查询的数据库的名称,这个查询会返回指定数据库中所有表的名称。