[Oracle] 프라이머리 키 추출하는 방법 (제약조건 타입 P 컬럼)

기본 키는 데이터의 무결성을 보장하며, 각 행이 고유한지 확인하는 데 사용하지요~

오라클에서 프라이머리 키로 설정된 컬럼을 확인하고 싶은 경우가 있을 텐데요, 간단하게 조회하는 쿼리에 대해 안내해드리겠습니다. 😊 제약조건 타입이 '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;

쿼리 설명

  1. ALL_CONS_COLUMNS: 오라클 시스템 뷰로, 제약 조건에 속하는 컬럼에 대한 정보를 제공합니다. 이 뷰에서 COLUMN_NAMEPOSITION을 조회하여, 테이블 내에서 기본 키로 설정된 컬럼과 그 순서를 확인할 수 있습니다.
  2. ALL_CONSTRAINTS: 테이블의 제약 조건 정보를 담고 있는 시스템 뷰입니다. 여기서 CONSTRAINT_TYPE = 'P'는 프라이머리 키(Primary Key)를 의미합니다.
  3. COLS: 테이블의 각 컬럼에 대한 메타데이터를 제공하는 뷰입니다. 이 뷰에서 COLUMN_ID는 테이블 내에서 컬럼의 위치를 나타냅니다.
  4. 조건:
    • 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: 각 컬럼의 이름을 매칭하여 프라이머리 키로 설정된 컬럼을 찾습니다.
  5. 정렬: COLS.COLUMN_ID를 기준으로 정렬하여, 테이블 내에서 프라이머리 키 컬럼의 순서를 확인할 수 있습니다.
이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗