SQL Serverでは、sp_tables
を使用できます 現在の環境のテーブルとビューのリストを取得するためのシステムストアドプロシージャ。
すべてのテーブルとビューを返すことも、特定の所有者、タイプ、パターン、または特定のテーブルやビューに絞り込むこともできます。
構文
構文は次のようになります:
sp_tables [ [ @table_name = ] 'name' ] [ , [ @table_owner = ] 'owner' ] [ , [ @table_qualifier = ] 'qualifier' ] [ , [ @table_type = ] "type" ] [ , [@fUsePattern = ] 'fUsePattern'];
すべての引数はオプションです。
例1-引数なし
このストアドプロシージャは、引数なしで実行できます。これを行うと、現在の環境のすべてのテーブルとビューが返されます。
このように:
EXEC sp_tables;
これにより、システムで500行を超える行が返されるため、ここでは結果を提供しません。ユーザー定義のテーブルとビューを返すだけでなく、sys
などのシステムオブジェクトも返します。 およびINFORMATION_SCHEMA
テーブルとビュー。
例2–すべての引数
もう一方の極端な例は、すべての引数を含む例です。これにより、結果が特定のテーブル名、特定のタイプ、特定の修飾子、および特定の所有者に絞り込まれます。
EXEC sp_tables @table_name = 'Customers', @table_owner = 'Sales', @table_qualifier = 'WideWorldImporters', @table_type = "'TABLE'", @fUsePattern = 1;
結果:
+--------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |--------------------+---------------+--------------+--------------+-----------| | WideWorldImporters | Sales | Customers | TABLE | NULL | +--------------------+---------------+--------------+--------------+-----------+
例3–特定のテーブルを返す
特定のテーブルを返す簡単な方法は、最初の引数を使用することです。
このように:
EXEC sp_tables @table_name = 'Customers';
または、次のいずれかのように、さらに簡潔に:
EXEC sp_tables 'Customers'; sp_tables 'Customers';
ただし、複数の行を取得する可能性があることに注意してください。この例では、2つの行が返されます:
+--------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |--------------------+---------------+--------------+--------------+-----------| | WideWorldImporters | Sales | Customers | TABLE | NULL | | WideWorldImporters | Website | Customers | VIEW | NULL | +--------------------+---------------+--------------+--------------+-----------+
最初の行はテーブル用で、2番目の行はビュー用です。
ビューやシステムテーブルを表示することに興味がない場合は、テーブルタイプを指定するための引数をもう1つ追加できます。
例4–特定のテーブルタイプを返す
ここでは、関心のあるテーブルタイプとテーブルの名前のみを指定して、前の例を改良します。
EXEC sp_tables @table_name = 'Customers', @table_type = "'TABLE'";
結果:
+--------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |--------------------+---------------+--------------+--------------+-----------| | WideWorldImporters | Sales | Customers | TABLE | NULL | +--------------------+---------------+--------------+--------------+-----------+
使用可能なタイプには、VIEW
が含まれます。 、TABLE
、およびSYSTEMTABLE
。
テーブルタイプは大文字でなければならないことに注意してください。
例5–複数のテーブルタイプを返す
テーブルタイプの構文で一重引用符およびが使用されていることに気付いたかもしれません。 二重引用符。これは、テーブルタイプのコンマ区切りのリストを受け入れるためです。リスト全体は二重引用符で囲まれ、各リスト項目は一重引用符で囲まれ、各項目はコンマで区切られます。
これは、テーブルタイプTABLE
を返す例です。 およびVIEW
。
EXEC sp_tables @table_type = "'TABLE','VIEW'";
SET QUOTED_IDENTIFIER
の場合は注意してください ON
です 、各単一引用符は2倍にする必要があり、パラメーター全体を単一引用符で囲む必要があります。
例6–テーブル修飾子の引数に関する注意
@table_qualifier
を使用する場合 引数の場合、その値は現在の環境と同じである必要があります。そうでない場合、エラーが発生します。 SQL Serverでは、テーブル修飾子はデータベース名を表します。一部の製品では、テーブルのデータベース環境のサーバー名を表します。
現在のデータベースとは異なる値を使用すると、SQLServerで次のようになります。
USE Music; EXEC sp_tables @table_qualifier = 'WideWorldImporters';
結果:
Msg 15250, Level 16, State 1, Procedure sp_tables, Line 86 The database name component of the object qualifier must be the name of the current database.
例7–ワイルドカード
@fUsePattern
を使用できます アンダースコア(_
)かどうかを指定する引数 )、パーセント(%
)、およびブラケット([
または]
)文字はワイルドカード文字として解釈されます。有効な値は0
です (パターンマッチングはオフです)および1
(パターンマッチングがオンになっています)。デフォルト値は1
です 。
パターンマッチングを使用して、文字「A」で始まるテーブル名を返す例を次に示します。
EXEC sp_tables @table_name = 'A%', @table_type = "'TABLE'", @fUsePattern = 1;
結果:
+-------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------------+---------------+--------------+--------------+-----------| | Music | dbo | Albums | TABLE | NULL | | Music | dbo | Artists | TABLE | NULL | +-------------------+---------------+--------------+--------------+-----------+
ただし、パターンマッチングを無効にすると、次のようになります。
EXEC sp_tables @table_name = 'A%', @table_type = "'TABLE'", @fUsePattern = 0;
結果:
(0 rows affected)