KEY_COLUMN_USAGE 뷰
KEY_COLUMN_USAGE
뷰에는 PRIMARY KEY
및 FOREIGN KEY
제약조건에 따라 키로 제한된 TABLE_CONSTRAINTS
에서 테이블 열이 포함됩니다.
스키마
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
뷰에는 다음과 같은 스키마가 있습니다.
열 이름 | 데이터 유형 | 값 |
---|---|---|
|
|
제약조건 프로젝트 이름입니다. |
|
|
제약조건 데이터 세트 이름입니다. |
|
|
제약조건 이름입니다. |
|
|
제한된 테이블의 프로젝트 이름입니다. |
|
|
제한된 테이블 데이터 세트의 이름입니다. |
|
|
제한된 테이블의 이름입니다. |
|
|
제한된 열의 이름입니다. |
|
|
제약조건 키 내 열의 서수 위치입니다(1부터 시작). |
|
|
외래 키의 경우 기본 키 제약조건 내 열의 서수 위치입니다(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 | +---------------------------+--------------+-------------+------------------+-------------------------------+