2017-08-02 76 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();