我正在开发一个应用程序,可以处理多个数据库服务器,如“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'
但它提供了特定服务器所有数据库的表名,我想要获取所选数据库的表名。如何限制此查询以获取特定数据库的表格?
可能是因为不同的SQL数据库管理系统处理模式的方式不同。
请尝试以下操作:
对于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 YOURDBNAME
GO
SELECT *
FROM sys.Tables
GO
DBName
的数据库中所有的表
:USE DBName
GO
SELECT *
FROM sys.Tables
GO
只需将DATABASE NAME
放在INFORMATION_SCHEMA.TABLES
之前:
select table_name from YOUR_DATABASE.INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE'
USE DBName;
SELECT * FROM sys.Tables;
如果你使用分号;
,我们可以不使用GO
。
SHOW TABLES;
选择数据库后:
USE db_name
选择 * 从 information_schema.tables;
如果有人想要列出特定数据库中的所有表,而又不想使用"USE"关键字,则可以按以下步骤操作:
SELECT TABLE_NAME FROM databasename.INFORMATION_SCHEMA.TABLES
SELECT TABLE_NAME FROM postgres.INFORMATION_SCHEMA.tables WHERE table_schema = public
请记住使用 postgres 。 - Arqam Rafay我没有看到这个答案,但是这就是我的做法:
SELECT name FROM databaseName.sys.Tables;