기본 키는 데이터의 무결성을 보장하며, 각 행이 고유한지 확인하는 데 사용하지요~
오라클에서 프라이머리 키로 설정된 컬럼을 확인하고 싶은 경우가 있을 텐데요, 간단하게 조회하는 쿼리에 대해 안내해드리겠습니다. 😊 제약조건 타입이 'P'인 컬럼을 추출해 볼 거예요.
프라이머리 키, 컬럼 추출 쿼리
SELECT ALL_CONS_COLUMNS.COLUMN_NAME, ALL_CONS_COLUMNS.POSITION, COLS.COLUMN_ID
FROM ALL_CONS_COLUMNS, ALL_CONSTRAINTS, COLS
WHERE ALL_CONS_COLUMNS.CONSTRAINT_NAME = ALL_CONSTRAINTS.CONSTRAINT_NAME
AND ALL_CONSTRAINTS.CONSTRAINT_TYPE = 'P'
AND ALL_CONS_COLUMNS.TABLE_NAME = :TABLENAME
AND ALL_CONS_COLUMNS.TABLE_NAME = COLS.TABLE_NAME
AND ALL_CONS_COLUMNS.COLUMN_NAME = COLS.COLUMN_NAME
ORDER BY COLS.COLUMN_ID;
쿼리 설명
- ALL_CONS_COLUMNS: 오라클 시스템 뷰로, 제약 조건에 속하는 컬럼에 대한 정보를 제공합니다. 이 뷰에서
COLUMN_NAME과POSITION을 조회하여, 테이블 내에서 기본 키로 설정된 컬럼과 그 순서를 확인할 수 있습니다. - ALL_CONSTRAINTS: 테이블의 제약 조건 정보를 담고 있는 시스템 뷰입니다. 여기서
CONSTRAINT_TYPE = 'P'는 프라이머리 키(Primary Key)를 의미합니다. - COLS: 테이블의 각 컬럼에 대한 메타데이터를 제공하는 뷰입니다. 이 뷰에서
COLUMN_ID는 테이블 내에서 컬럼의 위치를 나타냅니다. - 조건:
ALL_CONS_COLUMNS.CONSTRAINT_NAME = ALL_CONSTRAINTS.CONSTRAINT_NAME: 이 조건은 컬럼이 속한 제약 조건과 테이블의 제약 조건을 연결합니다.ALL_CONSTRAINTS.CONSTRAINT_TYPE = 'P': 이 조건을 통해 프라이머리 키만 선택합니다.ALL_CONS_COLUMNS.TABLE_NAME = :TABLENAME: 사용자가 특정 테이블을 지정할 수 있도록 테이블 이름을 변수로 설정합니다.ALL_CONS_COLUMNS.COLUMN_NAME = COLS.COLUMN_NAME: 각 컬럼의 이름을 매칭하여 프라이머리 키로 설정된 컬럼을 찾습니다.
- 정렬:
COLS.COLUMN_ID를 기준으로 정렬하여, 테이블 내에서 프라이머리 키 컬럼의 순서를 확인할 수 있습니다.
