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가 기본값입니다(즉, 이 명령은 계정에서 볼 권한이 있는 오브젝트를 반환함).
사용법 노트¶
각각의 단일 열 기본 키의 경우 출력에는 한 개의 행이 포함됩니다.
각각의 다중 열 기본 키의 경우 출력에는 기본 키의 각 열에 대해 한 개의 행이 포함됩니다.
계정(또는 데이터베이스나 스키마)에 많은 수의 테이블이 있는 경우 전체 계정(또는 테이블이나 스키마)을 검색하면 상당한 양의 컴퓨팅 리소스가 사용될 수 있습니다.
이 명령을 실행하기 위해 실행 중인 웨어하우스가 꼭 필요하지는 않습니다.
이 명령은 현재 사용자의 현재 역할에 하나 이상의 액세스 권한이 부여된 오브젝트만 반환합니다.
MANAGE GRANTS 액세스 권한은 그 권한을 보유한 자가 계정에 있는 모든 오브젝트를 볼 수 있도록 암시적으로 허용합니다. 기본적으로, 계정 관리자(ACCOUNTADMIN 역할 이 있는 사용자)와 보안 관리자(SECURITYADMIN 역할이 있는 사용자)만 MANAGE GRANTS 권한을 가집니다.
이 명령의 출력을 후처리하기 위해 파이프 연산자 (
->>) 또는 RESULT_SCAN 함수를 사용할 수 있습니다. 두 구문 모두 출력을 쿼리할 수 있는 결과 세트로 간주합니다.이 명령의 출력 열 이름은 소문자로 생성됩니다. 파이프 연산자 또는 RESULT_SCAN 함수와 함께 이 명령의 결과 세트를 사용하는 경우 쿼리의 열 이름에 큰따옴표로 묶인 식별자 를 사용하여 스캔된 출력의 열 이름과 일치하도록 합니다. 예를 들어, 출력 열의 이름이
type인 경우 식별자에 대해"type"을 지정합니다.
중요
표준 테이블의 경우 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;