sql >> データベース >  >> RDS >> Sqlserver

SQLServerデータベース内のユーザー定義テーブルの数をカウントする5つの方法

    以下は、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つの方法を参照してください。


    1. MySQLのバージョンを確認する方法

    2. SQLServerのテーブルから個別のレコードを取得する方法-SQLServer/TSQLチュートリアル112

    3. postgresql-テキストフィールド内の文字列のすべてのインスタンスを置き換えます

    4. SQL Server(T-SQL)でデータベースのANSI_NULLS設定を見つける方法