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

SQL Serverリストテーブル:すべてのテーブルを表示する方法

    実行しているSQLServerのバージョンによっては、ユーザーが作成したすべてのテーブルのリストをクエリして返す方法が若干異なる場合があります。以下では、古いSQLServer2000と新しい2005バージョン以降の両方のテーブルリストを取得するために使用できるTSQLステートメントについて簡単に説明します。

    SQLServer2000でのテーブルの一覧表示

    古いバージョンのSQLServer(SQL Server 2000など。ただし、この方法は下位互換性のためにSQL Server 2005でもサポートされています)の場合は、SYS.SYSOBJECTSにクエリを実行する必要があります。 メタデータビュー。 SYS.SYSOBJECTS stored proceduresを含む、データベースで作成されたすべてのオブジェクトの行が含まれます 、views 、およびuser tables (これはsystem tablesと区別するために重要です 。)

    SYSOBJECTS テーブルには、サーバーに追加された事実上すべての情報を保持する必要があるため、数十列のデータが格納されます。したがって、ユーザーが作成したテーブルのリストを検索するには(したがって、system tablesは無視します) )、xtypeの結果を見つける必要があります 列(object typeを指定します その行の場合)は、値Uと同じです。 、user tableの略です 。結果のTSQLステートメントは次のようになります。

    SELECT
      *
    FROM
      SYSOBJECTS
    WHERE
      xtype = 'U';
    GO
    

    注:SYSOBJECTS以降 SYSの一部です SYSOBJECTSを照会するときの名前空間 SYSOBJECTSを指定する必要はありません。 グローバルSYSの一部です 名前空間なので、上記の例のように省略できます。

    これにより、ユーザーが作成したすべてのテーブルの結果リストが返されます。すべての列をクエリすると返される情報の量が非常に多いため、nameのみを表示して結果をトリミングすることをお勧めします。 列とおそらくcrdate (作成日):

    SELECT
      name,
      crdate
    FROM
      SYSOBJECTS
    WHERE
      xtype = 'U';
    GO
    

    SQLServer2005以降のテーブルの一覧表示

    新しいバージョン(SQL 2005以降)を使用しているときにSQLサーバーのすべてのテーブルを一覧表示するには、INFORMATION_SCHEMAを照会する必要があります。 SQLServerに自動的に組み込まれるビュー。これらを使用すると、COLUMNSに関する情報など、この特定のSQLServerインスタンスのさまざまなメタデータを簡単に表示できます。 、ROUTINES 、さらにはTABLES

    INFORMATION_SCHEMA.TABLESを使用すると、4つの列が返されることに気付くかもしれません。 ビューですが、最も重要な列はTABLE_TYPEです。 、その行のテーブルが実際のテーブルであるかどうかを判別します(BASE TABLE )またはビュー(VIEW

    すべてのテーブルを返すにはおよび 1つのクエリでビューを表示するには、次のTSQLステートメントを実行します。

    SELECT
      *
    FROM
      INFORMATION_SCHEMA.TABLES;
    GO
    

    クエリするデータベースを指定することも賢明かもしれません:

    SELECT
      *
    FROM
      databaseName.INFORMATION_SCHEMA.TABLES;
    GO
    

    実際のテーブルを取得して結果からビューを除外するだけの場合は、WHERE TABLE_TYPE = 'BASE TABLE'を追加します。 条項:

    SELECT
      *
    FROM
      databaseName.INFORMATION_SCHEMA.TABLES
    WHERE
      TABLE_TYPE = 'BASE TABLE';
    GO
    

    1. 典型的なWordPressエラーを修正する方法

    2. mysql_real_escape_string()とmysql_escape_string()はアプリのセキュリティに十分ですか?

    3. MySQLのsubstring_index関数に相当するSQLServer

    4. MariaDBでのCHARSET()のしくみ