计算 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 ,将“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 数据库中的表数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用头文件cfloat中的符号常量获知浮点类型数据的表数范围---gyy整理