SHOW PRIMARY KEYS

지정된 테이블, 현재 스키마나 지정된 스키마의 모든 테이블, 현재 데이터베이스나 지정된 데이터베이스의 모든 테이블, 또는 현재 계정의 모든 테이블에 대한 기본 키를 나열합니다.

구문

SHOW [ TERSE ] PRIMARY KEYS
    [ IN { ACCOUNT | DATABASE [ <database_name> ] | SCHEMA [ <schema_name> ] | TABLE | [ TABLE ] <table_name> } ]
Copy

매개 변수

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는 기본 키에 고유한 값을 적용하지 않습니다.

출력

명령 출력은 다음 열에 기본 키 속성과 메타데이터를 제공합니다.

설명

created_on

테이블이 만들어진 날짜 및 시간입니다.

database_name

테이블이 저장된 데이터베이스입니다.

schema_name

테이블이 저장된 스키마입니다.

table_name

테이블의 이름입니다.

column_name

기본 키에 있는 열의 이름입니다.

key_sequence

기본 키가 여러 열로 구성된 경우 key_sequence 열의 숫자는 기본 키에서 그와 같은 열의 순서를 나타냅니다. 예를 들어, 기본 키가 CONSTRAINT pkey1 PRIMARY KEY (column_x, column_y) 로 정의된 경우 column_x 에 대한 key_sequence 번호는 1이고 column_y 에 대한 key_sequence 번호는 2입니다.

comment

제약 조건이 생성될 때 제약 조건에 대해 지정된 설명(있는 경우)입니다.

constraint_name

제약 조건의 이름입니다.

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;
Copy