我正在工作的应用程序,可以处理多个数据库服务器,如“MySQL”和“MS SQL Server”。
我想获得表的名称使用一个通用的查询,应该适合于所有数据库类型的特定数据库。我尝试了以下几点:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
但它是给表名的所有数据库的一个特定的服务器,但我想获得表名选择的数据库只。如何限制此查询以获取特定数据库的表?
我正在工作的应用程序,可以处理多个数据库服务器,如“MySQL”和“MS SQL Server”。
我想获得表的名称使用一个通用的查询,应该适合于所有数据库类型的特定数据库。我尝试了以下几点:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
但它是给表名的所有数据库的一个特定的服务器,但我想获得表名选择的数据库只。如何限制此查询以获取特定数据库的表?
当前回答
根据Michael Baylon的回答,我需要一个包含模式信息的列表,这就是我修改他的查询的方式。
SELECT TABLE_SCHEMA + '.' + TABLE_NAME as 'Schema.Table'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG = 'dbName'
ORDER BY TABLE_SCHEMA, TABLE_NAME
其他回答
下面的查询将选择数据库中所有名为DBName的表:
USE DBName
GO
SELECT *
FROM sys.Tables
GO
更新MSSQL服务器的最新版本(17.7)
SELECT name FROM sys.Tables WHERE type_desc = 'USER_TABLE'
或者SELECT *获取所有列。
在mysql中,使用:
SHOW TABLES;
选择DB后:
USE db_name
在我们的Oracle DB (PL/SQL)下面的代码工作,以获得我们的DB中所有存在的表的列表。
select * from tab;
and
select table_name from tabs;
两者都在工作。让我们试着找到你的。
从这里偷来:
USE YOURDBNAME
GO
SELECT *
FROM sys.Tables
GO