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 : 제약조건 정의된 칼럼과 제약조건 이름 저장
- 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 |