Oracle/개념

7장. Constraint(제약조건)

2024. 6. 13. 16:24
728x90

제약 조건(Constraint)이란?

 말 그대로 제약을 걸 수 있는 것이다. 올바른 데이터만 받아야 하므로, 테이블에 올바른 데이터만 입력받고 잘못된 데이터는 들어오지 못하도록 컬럼마다 정하는 규칙을 의미한다. 해당 규칙을 정하는 것이 제약 조건이다.

 

 

 

 

 

 


 

 

 

 

 

1. 제약 조건의 종류

 

조건 이름 의미
NOT NULL 이 조건이 설정된 컬럼에는 NULL 값이 입력되지 못하도록 한다.
NN이라 많이 적는다.
UNIQUE 말 그대로 유니크하다.
이 조건이 설정된 컬럼에는 중복된 값이 입력되지 못하도록 한다.
PRIMARY KEY 기본 키. 무조건 앞이 채워져 있어야 한다. 무조건 UNIQUE해야 한다.
이 조건은 NOT NULL + UNIQUE의 특징을 가지며 테이블 내에서 데이터들끼리의 유일성을 보장하는 컬럼을 설정한다. 그리고 테이블 당 1개만 설정할 수 있다.
FOREIGN KEY 다른 Table의 기본 키.
이 조건은 다른 테이블의 컬럼을 참조해서 검사를 한다.
FK라 많이 적는다.
CHECK 설정된 값만 적도록 한다.
이 조건에서 설정된 값만 입력을 허용하고 나머지는 거부된다.

 

 

FOREIGN KEY란?

두 개의 테이블을 서로 참조하도록 설정되는 것을 말한다. 외부 키를 참조한다.

 

 

 

 

 


 

 

 

 

 

2. 제약 조건 사용하기

 

1) 테이블 생성 시에 지정하기

CREATE TABLE new_emp1
(
    no NUMBER(4)
        CONSTRAINT emp1_no_pk PRIMARY KEY,
    name VARCHAR(20)
        CONSTRAINT emp1_name_nn NOT NULL,
    jumin VARCHAR2(13)
        CONSTRAINT emp1_jumin_nn NOT NULL
        CONSTRAINT emp1_jumin_uk UNIQUE,
    loc_code NUMBER(1)
        CONSTRAINT emp1_area_ck CHECK ( loc_code < 5 ),
    deptno VARCHAR2(6)
        CONSTRAINT emp1_deptno_fk REFRERENCES dept2(decode)
);

 

요약(약식) 방법

CREATE TABLE new_emp1
(
    no NUMBER(4) PRIMARY KEY,
    name VARCHAR(20) NOT NULL,
    jumin VARCHAR2(13) NOT NULL UNIQUE,
    loc_code NUMBEr(1) CHECK ( loc_code < 5 ),
    deptno VARCHAR2(6) REFRERENCES dept2(decode)
);

 

 

2) 테이블 생성 후 추가하기

# UNIQUE 제약조건 추가
ALTER TABLE new_emp1
ADD CONSTRAINT emp2_name_uk UNIQUE(name);

# NOT NULL 제약조건 추가
ALTER TABLE new_emp1
MODIFY ( loc_code constraint emp2_loccode_nn NOT NULL );

 

 

 부모 테이블 쪽에 설정되는 컬럼이 Primary Key이거나 Unique Key가 설정되어 있어야 한다. 그렇지 않으면 'ORA-02270: no matching unique or primary key for this column-list' 에러가 나타난다.

'Oracle > 개념' 카테고리의 다른 글

9장. VIEW(뷰)  (0) 2024.06.14
8장. INDEX (인덱스)  (1) 2024.06.14
6장. DML 데이터 관리  (0) 2024.06.13
5장. DDL 명령과 딕셔너리  (0) 2024.06.12
4장. JOIN  (3) 2024.06.12