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
가 기본값입니다(즉, 이 명령은 계정에서 볼 권한이 있는 오브젝트를 반환함).
사용법 노트¶
이 명령을 실행하기 위해 실행 중인 웨어하우스가 꼭 필요하지는 않습니다.
각각의 단일 열 기본 키의 경우 출력에는 한 개의 행이 포함됩니다.
각각의 다중 열 기본 키의 경우 출력에는 기본 키의 각 열에 대해 한 개의 행이 포함됩니다.
계정(또는 데이터베이스나 스키마)에 많은 수의 테이블이 있는 경우 전체 계정(또는 테이블이나 스키마)을 검색하면 상당한 양의 컴퓨팅 리소스가 사용될 수 있습니다.
이 명령의 출력을 사후 처리하려면 출력을 쿼리할 수 있는 테이블로 처리하는 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;