2010-05-21 123 views

回答

8

另一种方式,也将在MySQL和PostgreSQL

select TABLE_NAME from INFORMATION_SCHEMA.TABLES 
where TABLE_TYPE = 'BASE TABLE' 
4

工作试试这个:

SELECT s.NAME + '.' + t.NAME AS TableName 
FROM sys.tables t 
INNER JOIN sys.schemas s 
    ON t.schema_id = s.schema_id 

它将显示当前数据库中所有表的架构+表名。

这是一个版本,它将列出当前服务器上每个数据库中的每个表。它允许对任何部分或服务器+数据库+模式+表名的部分使用的搜索参数:

SET NOCOUNT ON 
DECLARE @AllTables table (CompleteTableName nvarchar(4000)) 
DECLARE @Search nvarchar(4000) 
     ,@SQL nvarchar(4000) 
SET @Search=null --all rows 
SET @SQL='select @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name from [?].sys.tables t inner join sys.schemas s on t.schema_id=s.schema_id WHERE @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name LIKE ''%'+ISNULL(@SEARCH,'')+'%''' 

INSERT INTO @AllTables (CompleteTableName) 
    EXEC sp_msforeachdb @SQL 
SET NOCOUNT OFF 
SELECT * FROM @AllTables ORDER BY 1 

集@Search为NULL所有表,将其设置为东西像“dbo.users”或“用户”或“.master.dbo”,甚至包括像通配符等

1

要获取领域信息过多,你可以使用以下“的.master%u。”:

SELECT TABLE_SCHEMA, TABLE_NAME, 
     COLUMN_NAME, substring(DATA_TYPE, 1,1) AS DATA_TYPE 
FROM information_schema.COLUMNS 
WHERE TABLE_SCHEMA NOT IN("information_schema", "mysql", "performance_schema") 
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION 
0
sys.tables 

包含所有表格。 因此请执行此查询以获取所有包含详细信息的表格。

SELECT * FROM sys.tables 

enter image description here

或者干脆选择从名称SYS.TABLES获得所有表的名称。

SELECT Name From sys.tables 
0

请使用以下查询来列出数据库中的表。

select name from sys.Tables 

此外,您可以添加where条件,跳过系统中加入type ='U'

防爆生成表格和列表只有用户创建的表:select name from sys.Tables where type ='U'

+0

请在适当的地方使用适当的格式。 – svgrafov 2017-10-02 08:47:45

+0

肯定Jens..thanks :) – 2017-10-02 10:24:04

相关问题