web-dev-qa-db-ja.com

SQL Serverデータベース内のテーブルの数を数える

MyDatabaseというSQL Server 2012データベースがあります。データベース内にいくつのテーブルがあるかを見つけるにはどうすればよいですか?

クエリの形式は次のようになると想定していますが、database_tablesをどのように置き換えるかわかりません。

USE MyDatabase
SELECT COUNT(*)
FROM [database_tables]
30
Tot Zam

INFORMATION_SCHEMA.TABLESを使用して、データベーステーブルに関する情報を取得できます。

Microsoft Tables Documentation で述べたように:

INFORMATION_SCHEMA.TABLESは、現在のユーザーが権限を持っている現在のデータベースの各テーブルに対して1行を返します。

したがって、次のクエリは、指定されたデータベース内のテーブルの数を返します。

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
59
Tot Zam

これを試して:

SELECT Count(*)
FROM <DATABASE_NAME>.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
5
M84
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();
2
Shafeer khan