SQL은 데이터 사전을 통해 제약 조건을 확인할 수 있습니다.
CREATE TABLE
데이터 사전을 조회하기 전, 실습용 테이블을 생성하였습니다.
CREATE TABLE department (
deptno NUMBER(2) CONSTRAINT department_deptno_pk PRIMARY KEY,
dname VARCHAR2(15),
loc VARCHAR2(15)
);
-- 테이블 명만 다른 동일한 쿼리입니다. --
CREATE TABLE department2 (
deptno NUMBER(2),
dname VARCHAR2(15),
loc VARCHAR2(15),
CONSTRAINT department2_deptno_pk PRIMARY KEY (deptno)
);
칼럼에 제약 조건을 걸 때, 해당 로우에 제약 조건 쿼리를 작성할 수 있지만,
department2처럼 칼럼을 먼저 작성하고, 아래에 제약 조건 쿼리를 작성하여 지정할 수 있습니다.
1. USER_CONSTRAINTS
USER_CONSTRAINTS 데이터 사전은 특정 테이블의 제약 조건을 확인할 수 있지만,
어떤 칼럼에 제약 조건이 설정되어 있는지는 확인 불가합니다.
다음은 제약 조건의 타입입니다.
- P : PRIMARY KEY (기본키)
- R : FOREIGN KEY (외래키)
- U : UNIQUE (고유키)
- C : NOT NULL, CHECK ( 필드의 NULL값 제한, 칼럼에 특정 제약 조건 설정 )
다음은 department, department2 테이블의 USER_CONSTRAINTS 데이터 사전 쿼리입니다.
SELECT
*
FROM
USER_CONSTRAINTS
WHERE
table_name IN ('DEPARTMENT', 'DEPARTMENT2');
앞서 두 테이블의 deptno 칼럼을 PRIMARY KEY(기본키)로 제약 조건을 설정했기 때문에,
CONSTRAINT TYPE이 P로 나왔습니다.
2. USER_CONS_COLUMNS
USER_CONSTRAINTS 데이터 사전은 특정 테이블의 제약 조건을 확인했다면,
USER_CONS_COLUMNS는 어떤 칼럼에 제약 조건이 설정되어 있는지 확인할 수 있습니다.
SELECT
*
FROM
USER_CONS_COLUMNS
WHERE
table_name IN ('DEPARTMENT', 'DEPARTMENT2');
쿼리 결과처럼 deptno 칼럼이 PRIMARY KEY(기본키)로 설정되어 있음을 볼 수 있습니다.
데이터 사전을 통해 조회를 할 때, 분별력을 부여하기 위해
CREATE TABLE시, CONSTRAINT NAME을 잘 작성해야 합니다.
일반적으로 " 테이블 명_칼럼 명_키 타입" 으로 작명합니다.