如何编写查询数据库中所有表的SQL语句?
- 数据库
- 2025-10-13
- 10
查询数据库所有表的SQL语句可以根据使用的数据库管理系统(DBMS)而有所不同,以下是一些常见数据库系统中查询所有表的SQL语句示例:
MySQL
SHOW TABLES;
或者,如果你想要更详细的信息,比如表所在的数据库:
SHOW TABLES FROM `database_name`;
PostgreSQL
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
如果你想查询所有数据库中的所有表:

SQL Server
SELECT table_name FROM information_schema.tables WHERE table_type = 'BASE TABLE';
Oracle
SELECT table_name FROM user_tables;
如果你想查询所有用户的所有表:
SELECT table_name FROM all_tables;
或者查询当前用户权限下的表:
SELECT table_name FROM all_tables WHERE owner = 'YOUR_USERNAME';
SQLite
SQLite没有提供直接查询所有表的系统表,但你可以使用以下SQL语句:
SELECT name FROM sqlite_master WHERE type='table';
MariaDB
与MySQL类似,可以使用以下SQL语句:
SHOW TABLES;
或者:

SHOW TABLES FROM `database_name`;
下面是一个表格,归纳了上述不同数据库系统中查询所有表的SQL语句:
| 数据库管理系统 | SQL语句 |
|---|---|
| MySQL | SHOW TABLES; SHOW TABLES FROMdatabase_name |
| PostgreSQL | SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'; SELECT table_name FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog', 'information_schema'); |
| SQL Server | SELECT table_name FROM information_schema.tables WHERE table_type = 'BASE TABLE'; |
| Oracle | SELECT table_name FROM user_tables; SELECT table_name FROM all_tables; SELECT table_name FROM all_tables WHERE owner = 'YOUR_USERNAME'; |
| SQLite | SELECT name FROM sqlite_master WHERE type='table'; |
| MariaDB | SHOW TABLES; SHOW TABLES FROMdatabase_name |
FAQs
Q1:为什么有些数据库系统中查询所有表的SQL语句这么复杂?
A1:不同的数据库系统在设计上有所差异,导致查询所有表的SQL语句也各不相同,一些数据库系统(如Oracle)提供了详细的系统视图,可以轻松查询表信息,而其他系统(如SQLite)可能没有内置的系统表来存储这样的信息。
Q2:在查询所有表时,是否可以只获取表名,而不获取其他信息?
A2:是的,你可以通过调整SQL语句来只获取表名,在MySQL中,你可以使用SHOW TABLES;语句来只获取当前数据库中的表名,在其他数据库系统中,你可以在SELECT语句中只选择table_name列。
