我有一个名为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也不一样。 –