我正在工作的应用程序,可以处理多个数据库服务器,如“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'
但它是给表名的所有数据库的一个特定的服务器,但我想获得表名选择的数据库只。如何限制此查询以获取特定数据库的表?
当前回答
是oracle是:
select * from user_tables
也就是说,如果您只想让已登录用户/模式拥有对象,则可以使用all_tables或dba_tables,其中包括系统表。
其他回答
我没有看到这个答案,但嘿,这就是我所做的:
SELECT name FROM databaseName.sys.Tables;
可能是因为不同的sql dbms处理模式的方式不同。
试试下面的方法
对于SQL Server:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='dbName'
MySQL:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='dbName'
对于Oracle,我认为等效的方法是使用DBA_TABLES。
选择下面的数据库查询:
use DatabaseName
Now
SELECT * FROM INFORMATION_SCHEMA.TABLES
现在您可以在控制台中看到下面创建的表。
PFA.
只要把数据库名称放在INFORMATION_SCHEMA前面。表:
select table_name from YOUR_DATABASE.INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE'
是oracle是:
select * from user_tables
也就是说,如果您只想让已登录用户/模式拥有对象,则可以使用all_tables或dba_tables,其中包括系统表。