2010-05-21 113 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

相關問題