본문 바로가기
IT/SQL

Constraint

by 봉즙 2019. 6. 7.
  • CONSTRAINT(제약)

- 무결성 유지(데이터 보호)를 위하여 사용자가 지정할 수 있는 성질

- 모든 Constraint는 데이터 사전(data dictionary)에 저장된다.

- Constraint의 이름은 한 사용자 내에서 중복될수 없다.

 

1. 컬럼 레벨 제약 조건 -  어떤 유형의 제약 조건도 정의할수 있다.

1
컬럼 [CONSTRAINT 제약조건 이름] 제한조건 유형, 

2. 테이블 레벨 제약조건 - NOT NULL을 제외한 어떤 제약 조건도 정의 가능하다. 컬럼 레벨 제약과 별개이고, 여러 컬럼에 제약조건을 정의 할 때 사용한다.

1
2
칼럼 , ....
[CONSTRAINT 제약조건 이름] 제한조건 유형 (칼럼1, 칼럼2....)

 

Constraint 종류

1. NOT NULL :  컬럼이 nul 값을 가질 수 없다, 컬럼에서만 사용가능

1
2
...last_name VARCHAR2(25)
CONSTRAINT emp_last_name_nn NOT NULL...

2. UNIQUE : 중복이되지 않는 컬럼이나 테이블의 모든 행에서 고유의 값을 가져야한다. 인덱스 자동생성

1
2
...reg_no VARCHAR2(13)
CONSTAINT emp_reg_no_uk UNIQUE,......

3. PRIMARY KEY : NOT NULL과 UNIQUE의 특징을 모두 소유,  단 하나의 PK만 허용하며  UNIQUE 인덱스 자동생성
※인덱스 : UNIQUE, PK( NOT null + unique)에서 자동생성되며 중복값을 허용하지 않고, 트리를 만들어 체크한다.

1
2
3
4
5
CONSTTRAINT s_emp_id_pk PRIMARY KEY....
CONSTRAINT s_emp_id_pk PRIMARY KEY(id),....
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter

4.FOREIGN KEY :  자식 테이블에 정의하며 부모 테이블의 값과 일치하거나 NULL이여야 한다.

1
2
3
4
5
6
7
8
9
...dept_id NUMBER(7)
       CONSTRAINT s_emp_dept_id_fk
       REFERENCES s_dept(id)....
 
...dept_id NUMBER(7)
       CONSTARINT s_emp_dept_id_fk
       FOREIGN KEY(dept_id)
       REFERENCES s_dept(id)....

※ 아무 값이나 들어오는 것을 방지하기 위해서 참조하고자 하는 테이블이 먼저 생성되어있어야 한다.  FOREIGN KEY 제약 조건을 줄 때 ON DELETE CASCDE (PK가 지워지면 FK가 같이 지워지게 한다, 오류때문에 잘 사용하지 않음.)옵션을 줄수 있다.

5. CHECK : 컬럼값이 반드시 참이여야 하는 조건

1
2
3
       CONSTRAINT emp_salary_ck
       CHECK(salary between 500 and 10000)....

 

참조 무결성 제약조건의 오류 발생

- 자식테이블에 입력하려고 하는 값이 부모 테이블에 없는 경우

- 자식테이블에서 수정하려고 하는 값이 부모테이블에 없는 경우

- 부모테이블에서 삭제하려고 하는 값이 자식테이블에서 참조되는 겅우

기타 제약조건에 위배되는 데이터를 입력 수정 삭제 하는 경우에 발생

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

Dictionary  (0) 2019.06.08
TRANSACTION CONTROL  (0) 2019.06.08
SubQUERY  (0) 2019.06.07
SET연산자  (0) 2019.06.07
JOIN  (0) 2019.06.07

댓글