2017-08-02 99 views
1

我有一個名爲MyDatabase的SQL Server 2012數據庫。我怎樣才能找到數據庫中有多少個表?統計SQL Server數據庫中的表的數量

我假設查詢的格式會像下面這樣,但我不知道是什麼來代替database_tables有:

USE MyDatabase 
SELECT COUNT(*) 
FROM [database_tables] 
+1

@TabAlleman這怎麼可能是一個副本?表和存儲過程是不同的東西,所以SQL 2008和2012也不一樣。 –

回答

8

您可以使用INFORMATION_SCHEMA.TABLES來獲取有關數據庫表的信息。

Microsoft Tables Documentation提到:

INFORMATION_SCHEMA.TABLES返回一行中的量,當前用戶具有權限的當前數據庫中每個表。

下面的查詢,因此,將返回指定數據庫表的數目:

USE MyDatabase 
SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' 

由於SQL Server 2008中,你也可以使用sys.tables來算的數表。

Microsoft sys.tables Documentation

sys.tables返回在SQL Server中的每個用戶表中的一行。

下面的查詢也將返回表的數量在你的數據庫:

SELECT COUNT(*) 
FROM sys.tables 
+0

關於這兩個來源的一篇好文章就是這一篇[對INFORMATION_SCHEMA視圖的情況](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/the-case-against-information-schema-views .aspx),並強調了您可能使用系統目錄over INFORMATION_SCHEMA的幾個原因。另外,我知道這很迂腐,但是在SQL Server 2005中引入了'sys.tables' – GarethD

0

試試這個:

SELECT Count(*) 
FROM <DATABASE_NAME>.INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' 
0
USE MyDatabase 
SELECT Count(*) 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE'; 

獲取表計數

SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName'; 

這也適用

USE databasename; SHOW TABLES; SELECT FOUND_ROWS();