SHOW PRIMARY KEYS¶
1つ以上のテーブルの主キーを一覧表示します。次のオプションを指定できます。
単一テーブル
現在のスキーマまたは指定されたスキーマのすべてのテーブル
現在のデータベースまたは指定したデータベースのすべてのテーブル
現在のアカウントの全テーブル
構文¶
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を指定すると、コマンドは、指定されたデータベースのスキーマすべての記録を取得します。:samp:`{db_name}`を指定しない場合、以下のようになります:
現在のデータベースがある場合、コマンドは、現在のデータベースにあるスキーマすべての記録を取得します。
現在のデータベースがない場合、コマンドは、アカウントにあるすべてのデータベースとスキーマの記録を取得します。
キーワード
SCHEMAを指定すると、次のようになります。修飾されたスキーマ名(例:
my_database.my_schema)を指定すると、コマンドは、指定されたデータベースとスキーマの記録を取得します。修飾されていない
schema_nameを指定すると、次のようになります。現在のデータベースがある場合、コマンドは、現在のデータベースにある指定されたスキーマの記録を取得します。
現在のデータベースがない場合、コマンドは、エラー
SQL compilation error: Object does not exist, or operation cannot be performedを表示します。
:samp:`{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つの行が含まれます。
アカウント(またはデータベースまたはスキーマ)に多数のテーブルがある場合、アカウント全体(またはテーブルまたはスキーマ)を検索すると、大量のコンピューティングリソースが消費される可能性があります。
このコマンドの実行には、稼働中のウェアハウスは必要ありません。
このコマンドは、現在のユーザーの現在のロールに少なくとも1つのアクセス権限が付与されているオブジェクトのみを返します。
MANAGE GRANTS アクセス権限により、所有者はアカウント内のすべてのオブジェクトを暗黙的に参照できます。デフォルトでは、アカウント管理者( ACCOUNTADMIN ロールを持つユーザー)とセキュリティ管理者( SECURITYADMIN ロールを持つユーザー)のみが MANAGE GRANTS 権限を持っています。
このコマンドの出力を後処理するには、 パイプ演算子 (
->>)または RESULT_SCAN 関数。どちらのコンストラクトも、出力を クエリできる結果セットとして扱います。For example, you can use the pipe operator or RESULT_SCAN function to select specific columns from the SHOW command output or filter the rows.
When you refer to the output columns, use double-quoted identifiers for the column names. For example, to select the output column
type, specifySELECT "type".You must use double-quoted identifiers because the output column names for SHOW commands are in lowercase. The double quotes ensure that the column names in the SELECT list or WHERE clause match the column names in the SHOW command output that was scanned.
重要
標準テーブルでは、Snowflake は PRIMARY KEY 制約を強制しませんが、 ハイブリッドテーブル では強制されます。
出力¶
コマンド出力では、次の列に主キープロパティとメタデータが提供されます。
列 |
説明 |
|---|---|
|
テーブルが作成された日時。 |
|
テーブルが保存されているデータベース。 |
|
テーブルが保存されているスキーマ。 |
|
テーブルの名前。 |
|
主キーの列の名前。 |
|
主キーが複数の列で構成されている場合、 |
|
制約が作成されたときに制約に指定されたコメント(存在する場合)。 |
|
制約の名前。 |
例¶
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;