我正在工作的应用程序,可以处理多个数据库服务器,如“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'
但它是给表名的所有数据库的一个特定的服务器,但我想获得表名选择的数据库只。如何限制此查询以获取特定数据库的表?
当前回答
选择下面的数据库查询:
use DatabaseName
Now
SELECT * FROM INFORMATION_SCHEMA.TABLES
现在您可以在控制台中看到下面创建的表。
PFA.
其他回答
USE DBName;
SELECT * FROM sys.Tables;
我们可以不用GO代替,你可以用分号;
只要把数据库名称放在INFORMATION_SCHEMA前面。表:
select table_name from YOUR_DATABASE.INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE'
简单地得到所有的重要信息与下面的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;
USE dbName;
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE (TABLE_SCHEMA = 'dbName' OR TABLE_SCHEMA = 'schemaName')
ORDER BY TABLE_NAME
如果您在MS SQL server上使用多个模式,那么选择TABLE_NAME而不同时选择TABLE_SCHEMA的好处可能有限,因此我假设我们在使用MS SQL server时对属于已知模式的表感兴趣。
我已经用SQL Server Management Studio和MySQL Workbench分别用我自己的SQL Server数据库和MySQL数据库测试了上面的查询,在这两种情况下,它都给出了表名。
该查询将Michael Baylon的两个不同查询合并为一个,然后可以在任意一种数据库类型上运行。WHERE子句的第一部分适用于MySQL数据库,第二部分(在OR之后)适用于MS SQL Server数据库。它很难看,逻辑上也有点不正确,因为它假定不存在与数据库同名的不需要的模式。这可能会帮助那些正在寻找可以在任一数据库服务器上运行的单个查询的人。
是oracle是:
select * from user_tables
也就是说,如果您只想让已登录用户/模式拥有对象,则可以使用all_tables或dba_tables,其中包括系统表。