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 가 기본값입니다(즉, 이 명령은 계정에서 볼 권한이 있는 오브젝트를 반환함).

사용법 노트

  • 각각의 단일 열 기본 키의 경우 출력에는 한 개의 행이 포함됩니다.

  • 각각의 다중 열 기본 키의 경우 출력에는 기본 키의 각 열에 대해 한 개의 행이 포함됩니다.

  • 계정(또는 데이터베이스나 스키마)에 많은 수의 테이블이 있는 경우 전체 계정(또는 테이블이나 스키마)을 검색하면 상당한 양의 컴퓨팅 리소스가 사용될 수 있습니다.

  • 이 명령을 실행하기 위해 실행 중인 웨어하우스가 꼭 필요하지는 않습니다.

  • 이 명령은 현재 사용자의 현재 역할에 하나 이상의 액세스 권한이 부여된 오브젝트만 반환합니다.

  • 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, specify SELECT "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 제약 조건을 적용하지 않지만, 하이브리드 테이블 에는 해당 제약 조건이 적용됩니다.

출력

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

설명

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