以下は、SQLServerの現在のデータベースにあるユーザー定義テーブルの数をすばやく判断するために使用できる5つの方法です。
5つのオプションはすべて、COUNT()を使用します カウントを取得する関数。もちろん、これをアスタリスク(*)に置き換えることができます。 )、またはすべてのユーザー定義テーブルのリストを返す列の名前。
オプション1– sys.tables
これを行う最も明白な方法は、sys.tablesにクエリを実行することです。 システムカタログビュー。このビューの全体的な目的は、各ユーザーテーブルの行を返すことであるため、まさに必要なものです。
USE WideWorldImportersDW; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
結果:
+-------------------------+ | Number of User Tables | |-------------------------| | 29 | +-------------------------+
この場合、WideWorldImportersDWからユーザーテーブルの数を返します。 データベース。
別のデータベースに切り替えると、別の結果が得られます:
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
結果:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
前述のように、COUNT(*)を置き換えるだけで、テーブルを一覧表示できます。 アスタリスクの付いた行(* )または列の名前:
USE Music; SELECT name FROM sys.tables;
結果:
+---------+ | name | |---------| | Artists | | Genres | | Albums | | Country | +---------+
オプション2–sys.objectsをタイプでフィルタリング
もう1つのオプションは、sys.objectsにクエリを実行することです。 カタログビュー。
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type = 'U';
結果:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
この場合、type = 'U'でフィルタリングする必要があります (U 「ユーザーテーブル」用です。
オプション3–「タイプの説明」でsys.objectsをフィルタリングする
sys.objectsをクエリする別の方法 ビューは、type_descで結果をフィルタリングすることです 桁。
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type_desc = 'USER_TABLE';
結果:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
オプション4– OBJECTPROPERTY()関数を使用してsys.objectsをフィルタリングします
OBJECTPROPERTY()を使用することもできます WHEREで機能する 句。
この関数は、オブジェクトIDとプロパティの2つの引数を受け入れます。オブジェクトIDはテーブルID、プロパティはIsUserTableにすることができます。 、オブジェクトがシステムテーブルであるかどうかを決定します。
したがって、次のようなことができます:
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE OBJECTPROPERTY(object_id, 'IsUserTable') = 1;
結果:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
オプション5– INFORMATION_SCHEMA.TABLES
このオプションは、INFORMATION_SCHEMA.TABLESにクエリを実行します 情報スキーマビュー。このビューはビューとテーブルの両方を返すため、TABLE_TYPE = 'BASE TABLE'でフィルタリングする必要があります テーブルだけを返します。
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
結果:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
システムテーブルの数を確認する必要がある場合は、SQLServerでシステムテーブルの数をカウントする3つの方法を参照してください。