计算 SQL Server 数据库中的表数 [重复]

Posted

技术标签:

【中文标题】计算 SQL Server 数据库中的表数 [重复]【英文标题】:Count the Number of Tables in a SQL Server Database [duplicate] 【发布时间】:2018-01-09 21:42:59 【问题描述】:

我有一个名为 MyDatabase 的 SQL Server 2012 数据库。我怎样才能找到数据库中有多少张表?

我假设查询的格式如下所示,但我不知道用什么替换 database_tables

USE MyDatabase
SELECT COUNT(*)
FROM [database_tables]

【问题讨论】:

@TabAlleman 这怎么可能是那个的副本?表和存储过程是不同的东西,因此 SQL 2008 和 2012 也不相同。 【参考方案1】:

您可以使用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

【讨论】:

一篇关于这两个来源的好文章是The case against INFORMATION_SCHEMA views,并强调了您可能使用系统目录而不是 INFORMATION_SCHEMA 的几个原因。另外,我知道这很迂腐,但sys.tables 是在 SQL Server 2005 中引入的【参考方案2】:

试试这个:

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

【讨论】:

对我不起作用。也许我错过了什么? @ransems ,将“”替换为您的数据库名称:select db_name()【参考方案3】:
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();

【讨论】:

以上是关于计算 SQL Server 数据库中的表数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

计算Oracle中的表数

phpmyadmin 中数据库中的表数 4

使用头文件cfloat中的符号常量获知浮点类型数据的表数范围---gyy整理

如何从 SQL Server 中的表中删除重复行 [重复]

SQL Server - 如何根据将插入数据半小时的表中的几个参数来计算持续时间?

sql server中的表行到列