반전공자

[DB] Oracle Integrity Constraint 본문

DATABASE

[DB] Oracle Integrity Constraint

하연01 2021. 11. 9. 20:21

(integrity) constraint : 무결성 제약조건 

   * 예상치 못한 데이터의 손실, 일관성을 위반하는 데이터의 추가, 변경 등을 예방하기 위해 사용한다. 

 

< Integrity Constraint >

- NOT NULL : NULL 허용 안함
- UNIQUE : 중복허용안함
- PRIMARY KEY : 기본키
- FOREIGN KEY : 외래키
- CHECK : 값 검토

 

< NOT NULL > 

     : NULL 값이 존재할 수 없다. 

       컬럼형태로만 제약조건을 정의할 수 있다. 테이블에 설정하는 것 불가능 

 

null 값을 갖지 않는 bookno 컬럼을 갖는 book 테이블을 만들어라. 
CREATE TABLE book (
	bookno NUMBER(5) NOT NULL
);

 

 

< UNIQUE > 

     : 중복된 값을 허용하지 않는다. NULL은 존재할 수 있다. 

       복합컬럼에 대해서도 정의할 수 있다.

       자동적으로 인덱스가 생성된다. 

중복된 값을 허용하지 않는 bookno 컬럼을 갖는 book 테이블을 만들어라. 
CREATE TABLE book (
	bookno NUMBER (5) CONSTRAINT c_book_u UNIQUE
);

 

 

< PRIMARY KEY >

      : NOT NULL + UNIQUE 

        테이블 당 하나만 존재할 수 있다. (지정한번) 

        복합 컬럼에 대해서 정의 가능하다. 

ssn1, ssn2를 기본키로 하는 Book 테이블을 만들자. 
CREATE TABLE book(
	ssn1 NUMBER(9), 
    	ssn2 NUMBER(9),
    	PRIMARY KEY (ssn1, ssn2)
);

 

 

< FOREIGN KEY > 

      : = Referential Integrity 

        참조무결성 제약의 일부이다. 일반적으로 reference되는 테이블의 PK를 참조한다. (기본키참조) 

        참조되는 테이블에 없는 값은 삽입 불가하다. 

 

 - 참조되는 테이블의 레코드 삭제 시 동작방식 

ON DELETE NO ACTION : 해당하는 FK를 가진 참조행 삭제 시도 시 오류발생 하며 delete 문 ROLLBACK (원상복구) 
ON DELETE CASECADE : 해당하는 FK를 가진 참조행도 삭제 
ON DELETE : 지정하지 않는다면 NO ACTION이 기본값으로 사용된다. 
ON DELETE SET NULL : 해당하는 FK를 NULL로 바꾼다. NULL이 허용되어있는 상태여야 가능하다. 
ON DELETE SET DEFAULT : 기본값으로 설정. 기본값이 지정되어있지 않다면 Null이 기본이다. 

 

author 테이블의 id를 외래키로 참조하는 book 테이블을 만들자. 
CREATE TABLE book(
	...
	author_id NUMBER(10),
    	CONSTRAINT c_book_fk FOREIGN KEY (author_id)
   	REFERENCES author(id)
    	ON DELETE SET NULL
);

 

 

< CHECK > 

      : 임의의 조건을 검사한다. 조건식이 참이어야 변경가능하게 한다. 

rate의 값이 1, 2, 3, 4, 5 중 하나에 해당한다면 변경 가능하게 하는 테이블 book을 만들어라. 
CREATE TABLE book(
	rate NUMBER CHECK (rate IN (1, 2, 3, 4, 5))
);

 

 

 

< ADD / DROP CONSTRAINT > 

     : 제약조건 추가 / 삭제 

 

- ADD CONSTRAINT 

     : NOT NULL은 추가하지 못한다. (테이블 생성 시 설정만 가능) 

같은 테이블의 empno를 mgr로 참조하는 설정을 추가한다.
ALTER TABLE emp ADD CONSTRAINT emp_mgr_fk
FOREIGN KEY (mgr) REFERENCES emp(empno);

 

- DROP CONSTRAINT 

      : ALTER TABLE 테이블이름 DROP CONSTRAINT 제약조건이름 

book의 c_book_u라는 이름을 가진 제약조건을 삭제해라.
ALTER TABLE book DROP CONSTRAINT c_book_u;

 

dept 테이블의 기본키를 삭제해라. 
ALTER TABLE dept DROP PRIMARY KEY CASECADE;

※ CASECADE : 기본키를 참조하는 다른 외래키의 제약조건도 같이 삭제한다. (해당하는 FK를 가진 참조행도 삭제)

 

'DATABASE' 카테고리의 다른 글

[DB] University  (0) 2021.11.24
[DB] Oracle DDL  (0) 2021.11.09
[ DB ] Relational Algebra Example (University)  (0) 2021.10.31
[ DB ] Relational Algebra Example (Banking)  (0) 2021.10.31
[DB] Relational Algebra  (0) 2021.10.31