计算SQL Server数据库中的表数

Tot*_*Zam 36 t-sql sql-server sql-server-2012

我有一个SQL Server 2012数据库MyDatabase.如何查找数据库中有多少个表?

我假设查询的格式类似于以下内容,但我不知道要替换什么database_tables:

USE MyDatabase
SELECT COUNT(*)
FROM [database_tables]
Run Code Online (Sandbox Code Playgroud)

Tot*_*Zam 64

您可以使用它INFORMATION_SCHEMA.TABLES来检索有关数据库表的信息.

Microsoft Tables文档中所述:

INFORMATION_SCHEMA.TABLES 为当前用户具有权限的当前数据库中的每个表返回一行.

因此,以下查询将返回指定数据库中的表数:

USE MyDatabase
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
Run Code Online (Sandbox Code Playgroud)

从SQL Server 2008开始,您还可以使用sys.tables 计算表的数量.

Microsoft sys.tables文档:

sys.tables 为SQL Server中的每个用户表返回一行.

以下查询还将返回数据库中的表的数量:

SELECT COUNT(*)
FROM sys.tables
Run Code Online (Sandbox Code Playgroud)


小智 16

USE MyDatabase
SELECT Count(*)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
Run Code Online (Sandbox Code Playgroud)

获取桌数

SELECT COUNT(*)
FROM information_schema.tables
WHERE table_schema = 'dbName';
Run Code Online (Sandbox Code Playgroud)

这也有效

USE databasename;
SHOW TABLES;
SELECT FOUND_ROWS();
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试这个:

SELECT Count(*)
FROM <DATABASE_NAME>.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
Run Code Online (Sandbox Code Playgroud)