実行している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