KEY_COLUMN_USAGE 뷰

KEY_COLUMN_USAGE 뷰에는 PRIMARY KEYFOREIGN KEY 제약조건에 따라 키로 제한된 TABLE_CONSTRAINTS에서 테이블 열이 포함됩니다.

스키마

INFORMATION_SCHEMA.KEY_COLUMN_USAGE 뷰에는 다음과 같은 스키마가 있습니다.

열 이름 데이터 유형

CONSTRAINT_CATALOG

STRING

제약조건 프로젝트 이름입니다.

CONSTRAINT_SCHEMA

STRING

제약조건 데이터 세트 이름입니다.

CONSTRAINT_NAME

STRING

제약조건 이름입니다.

TABLE_CATALOG

STRING

제한된 테이블의 프로젝트 이름입니다.

TABLE_SCHEMA

STRING

제한된 테이블 데이터 세트의 이름입니다.

TABLE_NAME

STRING

제한된 테이블의 이름입니다.

COLUMN_NAME

STRING

제한된 열의 이름입니다.

ORDINAL_POSITION

INT64

제약조건 키 내 열의 서수 위치입니다(1부터 시작).

POSITION_IN_UNIQUE_CONSTRAINT

INT64

외래 키의 경우 기본 키 제약조건 내 열의 서수 위치입니다(1부터 시작). 기본 키 제약조건의 경우 이 값은 NULL입니다.

범위 및 구문

이 뷰에 대한 쿼리에는 데이터 세트 한정자가 있어야 합니다. 데이터 세트 한정자가 있는 쿼리에는 데이터 세트에 대한 권한이 있어야 합니다. 자세한 내용은 구문을 참조하세요. 다음 표에서는 이 뷰의 리전 범위와 리소스 범위를 보여줍니다.

뷰 이름 리소스 범위 리전 범위
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; 데이터 세트 수준 데이터 세트 위치
다음을 바꿉니다.

  • (선택사항) PROJECT_ID: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.

데이터 세트 한정자가 있는 쿼리에는 데이터 세트에 대한 권한이 있어야 합니다. 리전 한정자가 있는 쿼리에는 프로젝트에 대한 권한이 있어야 합니다.

예시

예시 1:

다음 쿼리는 데이터 세트에서 단일 테이블의 제약조건을 보여줍니다.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE table_name = TABLE;

다음을 바꿉니다.

  • PROJECT_ID: 선택사항. 클라우드 프로젝트의 이름입니다. 지정하지 않으면 이 명령어는 기본 프로젝트를 사용합니다.
  • DATASET: 데이터 세트의 이름
  • TABLE: 테이블의 이름

반대로 다음 쿼리는 단일 데이터 세트의 모든 테이블에 대한 키 열 사용량을 보여줍니다.

SELECT *
FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

테이블이나 데이터 세트에 제약조건이 없는 경우 쿼리 결과는 다음과 같습니다.

+-----------------------------+
| There is no data to display |
+-----------------------------+
예시 2:

다음 DDL 문은 기본 키 테이블 및 외래 키 테이블을 만듭니다.

CREATE TABLE composite_pk (x int64, y string, primary key (x, y) NOT ENFORCED);
CREATE TABLE table composite_fk (x int64, y string, z string,  primary key (x, y)
NOT ENFORCED, CONSTRAINT composite_fk foreign key (z, x)
REFERENCES composite_pk (y, x) NOT ENFORCED);

예시 1에 나온 문으로 쿼리하면 쿼리 결과가 다음과 유사합니다. CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, 중복 열은 예시 결과에 포함되지 않습니다.

+---------------------------+--------------+-------------+------------------+-------------------------------+
|     CONSTRAINT_NAME       |  TABLE_NAME  | COLUMN_NAME | ORDINAL_POSITION | POSITION_IN_UNIQUE_CONSTRAINT |
+---------------------------+--------------+-------------+------------------+-------------------------------+
| composite_pk.pk$          | composite_pk | x           | 1                | NULL                          |
| composite_pk.pk$          | composite_pk | y           | 2                | NULL                          |
| composite_fk.pk$          | composite_fk | x           | 1                | NULL                          |
| composite_fk.pk$          | composite_fk | y           | 2                | NULL                          |
| composite_fk.composite_fk | composite_fk | z           | 1                | 2                             |
| composite_fk.composite_fk | composite_fk | x           | 2                | 1                             |
+---------------------------+--------------+-------------+------------------+-------------------------------+