본문 바로가기

DataBase/Oracle

Oracle(5) - 무결성제약조건

1. 무결성 제약조건이란?
 - 무결성 제약조건은 데이터를 추가, 삭제, 수정하는 과정에서 무결성을 유지하기 위해서 제약을 주는것을 말한다.
 - 여기서 무결성은 db내에서 확장성을 유지하는 것을 뜻하고, 제약조건이란 바람직하지 않은 데이터가 저장되는 것을 막느것을 말한다.

2. 무결성 제약조건의 종류

  • NOT NULL - NULL을 허용하지 않는다.
  • UNIQUE - 중복된 값을 허용하지 않는다. 항상 유일한 값만 허용
  • PRIMARY KEY - NULL과 중복된 값을 허용하지 않는다.
  • FOREIGN KEY - 참조되는 테이블의 칼럼의 값이 존재하면 허용한다.
  • CHECK - 범위나 조건을 지정하여 그안의 값만 허용한다

3. 예시
 - 
예를들어 사원번호같은경우는 중복되는 값이 있으면 안되기 때문에 UNIQUE로 지정해야 한다.
나머지 칼럼은 제약조건을 걸 필요가 없으면 그냥 작성한다.

   CREATE TABLE EMP001(
   EMPNO NUMBER(4) UNIQUE,
   ENAME VARCHAR2(10),
   SALARY NUMBER(3)
   );

- 만약 널값도 허용하고 싶지 않으면 PRIMARY KEY로 지정한다. PRIMARY KEY로 지정된 칼럼에 동일한 값이 들어간 경우 무결성 제약조건을 위반한것으로 파악되어 오류가 발생된다.

4. 참조무결성(FOREIGN KEY)

- 참조 무결성의 경우 먼저 존재해야하는 테이블이 부모테이블이 되고(부서), 그 부모테이블을 참조하는 테이블이 자식테이블(사원)이 된다. 부모키가 되기 위한 칼럼은 반드시 테이블의 기본키나, 유일키로 설정되어야한다. 

create table child(
empno number(5) primary key,
ename varchar2(10) not null,
job varchar2(5),
deptno number(4) references parent(deptno) -> parent테이블의 deptno칼럼에 참조함을 나타냄
); 

위같은 경우 데이터를 삽입할때 parent테이블의 deptno에 없는 데이터를집어넣으면 오류(참조무결성 오류)가 발생한다.

5. 테이블생성 후 제약조건 추가, 삭제
 - 테이블 생성 후 제약조건을 추가하기위해서는 DDL인 ALTER TABLE을 사용해야한다.

  • 기본키 제약조건 추가하기
    ALTER TABLE ADD PRIMARY KEY(COLUMN_NAME);
  • 외래키 제약조건 추가하기
    ALTER TABLE table_name ADD FORIGN KEY(COLUMN_NAME) REFERENCES TABLE_NAME(COLUMN_NAME);
  • 제약조건 삭제하기
    ALTER TABLE table_name DROP CONSTRAINT constraint_name;

6. CASECADE 옵션
- CASECADE 옵션을 사용하면 참조관계에있는 부모테이블의 제약조건을 비활성화하면 이를 참조하고 있는 자식테이블의 제약조건까지 같이 비활성화 시켜주는 옵션이다.

ALTER TABLE child DROP constraint pk CASCADE; -> pk를 참조하고있는 제약조건들도 자동으로 삭제

'DataBase > Oracle' 카테고리의 다른 글

Oracle(7) - 서브쿼리  (0) 2019.04.19
Oracle(6) - JOIN  (0) 2019.04.17
Oracle(4) - DML, 트랜잭션  (0) 2019.04.16
Oracle(3) - DDL  (0) 2019.04.16
Oracle(2) - SQL함수  (0) 2019.04.15