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

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

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

USE MyDatabase
SELECT COUNT(*)
FROM [database_tables]

【问题讨论】:

  • @TabAlleman 这怎么可能是那个的副本?表和存储过程是不同的东西,因此 SQL 2008 和 2012 也不相同。

标签: sql-server tsql count sql-server-2012 database-table


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    相关资源
    最近更新 更多