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');

 

USER_CONSTRAINTS

 

앞서 두 테이블의 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');

 

USER_CONS_COLUMNS

 

쿼리 결과처럼 deptno 칼럼이 PRIMARY KEY(기본키)로 설정되어 있음을 볼 수 있습니다.

 

 

데이터 사전을 통해 조회를 할 때, 분별력을 부여하기 위해

CREATE TABLE시, CONSTRAINT NAME을 잘 작성해야 합니다.

일반적으로 " 테이블 명_칼럼 명_키 타입" 으로 작명합니다.

 

 

 

 

 

 

 

 

'Database > SQL' 카테고리의 다른 글

그룹화  (0) 2023.08.17
인라인 뷰  (0) 2023.08.17
외래 키  (1) 2023.08.16
크로스 조인  (0) 2023.08.10
동등 조인  (0) 2023.07.26

+ Recent posts