我正在工作的应用程序,可以处理多个数据库服务器,如“MySQL”和“MS SQL Server”。

我想获得表的名称使用一个通用的查询,应该适合于所有数据库类型的特定数据库。我尝试了以下几点:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'

但它是给表名的所有数据库的一个特定的服务器,但我想获得表名选择的数据库只。如何限制此查询以获取特定数据库的表?


当前回答

对于postgres,它将是:

SELECT table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema  = 'your_schema' -- probably public 

其他回答

更新MSSQL服务器的最新版本(17.7)

SELECT name FROM sys.Tables WHERE type_desc = 'USER_TABLE'

或者SELECT *获取所有列。

是oracle是:

select * from user_tables

也就是说,如果您只想让已登录用户/模式拥有对象,则可以使用all_tables或dba_tables,其中包括系统表。

这很好

选择 * 从 information_schema.tables;

SELECT TABLE_NAME
FROM your_database_name.INFORMATION_SCHEMA.TABLES
ORDER BY TABLE_NAME;
Exec sp_MSforeachtable 'Select ''?'''