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

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

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

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


当前回答

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

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

或者SELECT *获取所有列。

其他回答

Exec sp_MSforeachtable 'Select ''?'''

在我们的Oracle DB (PL/SQL)下面的代码工作,以获得我们的DB中所有存在的表的列表。

select * from tab;

and

select table_name from tabs;

两者都在工作。让我们试着找到你的。

USE DBName;
SELECT * FROM sys.Tables;

我们可以不用GO代替,你可以用分号;

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

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

或者SELECT *获取所有列。

简单地得到所有的重要信息与下面的SQL在Mysql

    SELECT t.TABLE_NAME , t.ENGINE , t.TABLE_ROWS ,t.AVG_ROW_LENGTH, 
t.INDEX_LENGTH FROM 
INFORMATION_SCHEMA.TABLES as t where t.TABLE_SCHEMA = 'YOURTABLENAMEHERE' 
order by t.TABLE_NAME ASC limit 10000;