我有一個名爲MyDatabase
的SQL Server 2012數據庫。我怎樣才能找到數據庫中有多少個表?統計SQL Server數據庫中的表的數量
我假設查詢的格式會像下面這樣,但我不知道是什麼來代替database_tables
有:
USE MyDatabase
SELECT COUNT(*)
FROM [database_tables]
我有一個名爲MyDatabase
的SQL Server 2012數據庫。我怎樣才能找到數據庫中有多少個表?統計SQL Server數據庫中的表的數量
我假設查詢的格式會像下面這樣,但我不知道是什麼來代替database_tables
有:
USE MyDatabase
SELECT COUNT(*)
FROM [database_tables]
您可以使用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
關於這兩個來源的一篇好文章就是這一篇[對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
試試這個:
SELECT Count(*)
FROM <DATABASE_NAME>.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
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();
@TabAlleman這怎麼可能是一個副本?表和存儲過程是不同的東西,所以SQL 2008和2012也不一樣。 –