1. 데이터 무결성 제약 조건의 종류
  - NOT NULL : 해당 칼럼값은 NULL을 포함할 수 없음
  - 고유키(Unique key) : 테이블에서 해당 칼럼 값은 반드시 유일해야 함
  - 기본키 : 해당 칼럼 값은 반드시 존재해야 하며, 유일해야 함. Unique Key, NOT NULL 제약 조건이 결합된 형태
  - 참조(foreign key) : 해당칼럼 값은 참조되는 테이블의 칼럼 값 중의 하나와 일치하거나 NULL을 가짐
                           foreign key(자식)와 reference key(부모)는 index key가 있어야 속도가 빨라짐
  - CHECK : 해당 칼럼에 저장 가능한 데이터 값의 범위나 조건 지정

2. 테이블 생성 시 무결성 제약조건 생성
CREATE TABLE [schema.] table
    (column datatype [DEFAULT expression]
    [column_constraint],
    [table_constraint] [,…])

ex)CREATE TABLE subject
     (subno      NUMBER(5)
         CONSTRAINT subject_no_pk PRIMARY KEY
         DERERRABLE INITIALLY DEFERRED
         USING INDEX TABLESPACE indx,
      subname    VARCHAR2(20)
         CONSTRAINT subject_name_nn NOT NULL
      term       VARCHAR2(1)
         CONSTRAINT subject_term_ck CHECK(term in('1','2')),  or (term > 5) => 가능
      type       VARCHAR2(1));

3. 기존 테이블에 무결성 제약 조건 추가 방법
ALTER TABLE table
   ADD [CONSTRAINT constraint_name] constraint_type (column);

ex)ALTER TABLE department ADD CONSTRAINT dept_no_pk PRIMARY KEY(deptno);
ALTER TABLE department MODIFY (dname CONSTRAINT dept_dname_nn NOT NULL);
* NOT NULL 제약조건 추가는 NOT NULL 허용상태를 NOT NULL 불가로 변경하는 것이므로 MODIFY 명령문을 사용해야 한다.

4. 무결성 제약 조건 삭제
ALTER TABLE table
   DROP CONSTRAINT constraint_name [CASCADE];

ex)ALTER TABLE subject DROP CONSTRAINT subject_term_ck;

5. 제약조건의 비활성화
ALTER TABLE table
   DISABLE CONSTRAINT constraint_name [cascade];

ex)ALTER TABLE sugang DISABLE CONSTRAINT sugang_pk;

6. 제약조건의 활성화
ALTER TABLE table
   ENABLE [NOVALIDATE] CONSTRAINT constraint_name [CASCADE];

  * NOVALIDATE : 기존 데이터는 적용시키지 않고 새로 입력되거나 수정되는 데이터에만 적용시킨다는 의미.

7. 무결성 제약조건 데이터 딕셔너리
  : 사용자에 의해 정의된 무결성 제약조건을 조회하기 위한 데이터 딕셔너리 뷰는 USER_CONSTRAINTS,  USER_CONS_COLUMNS 가 있다.
  * USER_CONSTRAINTS : 제약 조건이 정의된 테이블 이름, 제약조건 이름, 제약 조건 종류 및 활성화 상태 정보 저장
  * USER_CONS_COLUMNS : 제약조건 정의된 칼럼과 제약조건 이름 저장

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

테이블 생성, 수정, 삭제  (0) 2009.12.30
데이터 딕셔너리  (0) 2009.12.30
인덱스(Index)  (1) 2009.12.30
뷰 View  (1) 2009.12.30
Admin Workshop 1 - 구조 10g  (0) 2009.12.30

+ Recent posts