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 |