- 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
|
참조 무결성 제약조건의 오류 발생
- 자식테이블에 입력하려고 하는 값이 부모 테이블에 없는 경우
- 자식테이블에서 수정하려고 하는 값이 부모테이블에 없는 경우
- 부모테이블에서 삭제하려고 하는 값이 자식테이블에서 참조되는 겅우
기타 제약조건에 위배되는 데이터를 입력 수정 삭제 하는 경우에 발생
'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 |
댓글