SHOW PRIMARY KEYS¶
指定されたテーブル、現在または指定のスキーマにあるすべてのテーブル、現在のデータベースまたは指定のデータベースにあるすべてのテーブル、または現在のアカウントにあるすべてのテーブルの主キーをリストします。
構文¶
SHOW [ TERSE ] PRIMARY KEYS
[ IN { ACCOUNT | DATABASE [ <database_name> ] | SCHEMA [ <schema_name> ] | TABLE | [ TABLE ] <table_name> } ]
パラメーター¶
TERSE
この句は構文的に受け入れられますが、出力には影響しません。
IN { ACCOUNT | DATABASE [ <データベース名> ] | SCHEMA [ <スキーマ名> ] | TABLE | [ TABLE ] <テーブル名> }
コマンドのスコープを指定します。コマンドのスコープは、コマンドが現在または指定のデータベース、スキーマ、テーブル、またはアカウントの記録のみをリストするかどうかを決定します。
キーワード
ACCOUNT
を指定すると、コマンドは、現在のアカウントのデータベースすべてにあるすべてのスキーマの記録を取得します。キーワード
DATABASE
を指定すると、次のようになります。db_name
を指定すると、コマンドは、指定されたデータベースのスキーマすべての記録を取得します。db_name
を指定しない場合は、次のようになります。現在のデータベースがある場合、コマンドは、現在のデータベースにあるスキーマすべての記録を取得します。
現在のデータベースがない場合、コマンドは、アカウントにあるすべてのデータベースとスキーマの記録を取得します。
キーワード
SCHEMA
を指定すると、次のようになります。修飾されたスキーマ名(例:
my_database.my_schema
)を指定すると、コマンドは、指定されたデータベースとスキーマの記録を取得します。修飾されていない
schema_name
を指定すると、次のようになります。現在のデータベースがある場合、コマンドは、現在のデータベースにある指定されたスキーマの記録を取得します。
現在のデータベースがない場合、コマンドは、エラー
SQL compilation error: Object does not exist, or operation cannot be performed
を表示します。
schema_name
を指定しない場合は、次のようになります。現在のデータベースがある場合は、次のようになります。
現在のスキーマがある場合、コマンドは、現在のデータベースにある現在のスキーマの記録を取得します。
現在のスキーマがない場合、コマンドは、現在のデータベースにあるスキーマすべての記録を取得します。
現在のデータベースがない場合、コマンドは、アカウントにあるすべてのデータベースとすべてのスキーマの記録を取得します。
table_name
なしでキーワードTABLE
を指定すると、次のようになります。現在のデータベースがある場合は、次のようになります。
現在のスキーマがある場合、コマンドは、現在のデータベースにある現在のスキーマの記録を取得します。
現在のスキーマがない場合、コマンドは、現在のデータベースにあるスキーマすべての記録を取得します。
現在のデータベースがない場合、コマンドは、アカウントにあるすべてのデータベースとすべてのスキーマの記録を取得します。
<テーブル名>
(キーワードTABLE
の有無にかかわらず)を指定すると、次のようになります。完全修飾された
<テーブル名>
(例:my_database_name.my_schema_name.my_table_name
)を指定すると、コマンドは指定されたテーブルのすべての記録を取得します。スキーマ修飾された
<テーブル名>
(例:my_schema_name.my_table_name
)を指定すると、次のようになります。現在のデータベースが存在する場合、コマンドは、指定されたテーブルのすべての記録を取得します。
現在のデータベースが存在しない場合、コマンドは
Cannot perform SHOW <オブジェクト型>. This session does not have a current database...
のようなエラーを表示します。
修飾されていない
<テーブル名>
を指定すると、次のようになります。現在のデータベースと現在のスキーマが存在する場合、コマンドは、現在のデータベースにおける現在のスキーマで指定されたテーブルの記録を取得します。
現在のデータベースが存在しないか、現在のスキーマが存在しない場合、コマンドは、
SQL compilation error: <オブジェクト> does not exist or not authorized.
のようなエラーを表示します。
デフォルト: セッションで現在使用中のデータベースがあるかどうかによって異なります。
データベース:
DATABASE
がデフォルトです(つまり、コマンドはデータベースで表示する権限を持つオブジェクトを返します)。データベースなし:
ACCOUNT
はデフォルトです(つまり、コマンドは、アカウントで表示する権限を持つオブジェクトを返します)。
使用上の注意¶
このコマンドの実行には、稼働中のウェアハウスを必要としません。
単一列の各主キーに対して、出力には1つの行が含まれます。
複数列の各主キーに対して、出力には主キーの列ごとに1つの行が含まれます。
アカウント(またはデータベースまたはスキーマ)に多数のテーブルがある場合、アカウント全体(またはテーブルまたはスキーマ)を検索すると、大量のコンピューティングリソースが消費される可能性があります。
このコマンドの出力を後処理するには、 RESULT_SCAN 関数を使用できます。この関数は、出力をクエリ可能なテーブルとして扱います。
重要
Snowflakeは、主キー制約を NOT NULL 制約として扱うことに注意してください。Snowflakeは、主キーに一意の値を適用しません。
出力¶
コマンド出力では、次の列に主キープロパティとメタデータが提供されます。
列 |
説明 |
---|---|
|
テーブルが作成された日時。 |
|
テーブルが保存されているデータベース。 |
|
テーブルが保存されているスキーマ。 |
|
テーブルの名前。 |
|
主キーの列の名前。 |
|
主キーが複数の列で構成されている場合、 |
|
制約が作成されたときに制約に指定されたコメント(存在する場合)。 |
|
制約の名前。 |
例¶
show primary keys;
show primary keys in account;
show primary keys in database;
show primary keys in database my_database;
show primary keys in schema;
show primary keys in schema my_schema;
show primary keys in schema my_database.my_schema;
show primary keys in my_table;
show primary keys in my_database.my_schema.my_table;