제약조건이란?
테이블의 어떠한 특정 컬럼에 사용자가 원하지 않는
데이터가 입력, 수정, 삭제되는 것을 방지하기 위한 조건
[ 제약조건 정의하는 구문 ]
[ 열 레벨 제약조건 ]
열 별로 제약조건을 정의하는 것이 가능하며,
무결성 제약조건의 어떤 유형도 정의하는 것이 가능하다
어떻게 사용되는지 확인해 볼까요?
테이블을 생성할 것인데 각 컬럼별 제약조건을 정의해서 생성할 것이다
1. 사원번호, 이름, 급여, 부서번호를 저장하는 테이블 생성
2. 컬럼별 제약조건 정의
▶ 사원번호는 PK (PRIMARY KEY)
▶ 이름은 NN (NOT NULL)
▶ 급여는 10000이하 (CHECK 사용)
▶ 부서번호는 departments 테이블을 참조해서 저장 (FOREIGN KEY)
3. 테이블의 이름과, 열 이름 그리고 열의 타입은 임의로 구성
[ 테이블 레벨 제약조건 ]
▶ 테이블을 정의할 때 모든 열들의 이름과 타입을 명시한 다음
테이블 정의 구문의 맨 아래에 제약조건들을 설정할 수 있다
▶ 테이블 레벨 제약조건을 설정할 때에는 열 이름을 명시해야 한다
▶ NOT NULL 제약조건은 테이블 레벨 제약조건을 사용할 수 없다
1. 사원번호, 이름, 급여, 부서번호를 저장하는 테이블 생성
2. 컬럼별 제약조건 정의
▶ 사원번호는 PK (PRIMARY KEY)
▶ 이름은 NN (NOT NULL)
▶ 급여는 10000이하 (CHECK 사용)
▶ 부서번호는 departments 테이블을 참조해서 저장 (FOREIGN KEY)
3. 테이블의 이름과, 열 이름 그리고 열의 타입은 임의로 구성
열 레벨 제약조건과 테이블 레벨 제약조건의 차이가 뭐나고요?
형식이 다르다는 것!
열 레벨 제약조건은 각 열마다 제약조건을 정의해주는 반면
테이블 레벨 제약조건은 열을 정의하여 테이블 구조를 만든 다음
열에 해당하는 제약조건을 정의해주는 것이다
제약조건의 종류
CHECK 제약조건
단일 열은 복수 CHECK 제약조건을 가질 수 있고 열 레벨 OR 테이블 레벨 정의 가능하다
CREATE TABLE test (
id varchar2(30) NOT NULL PRIMARY KEY
col varchar2(1) CHECK (col IN ('A', 'B', 'C' ))
);
CHECK 제약 조건 = WHERE절에 들어가는 조건 형식이라고 생각하면 편함
제약조건은 아니지만 컬럼 속성 중 하나로 DEFAULT라는 것도 있음
DAFAULT값은 언제 사용하는지?
테이블 생성하고 지속적으로 데이터값을 삽입해야 하는
경우에는 그 컬럼은 DEFAULT값을 부여(귀찮잖아요...)
INSERT문으로 행을 추가할 때 굳이 DEFAULT값(DATE)을
넣지 않아도 자동으로 입력된다
제약조건 관리는 어떻게 할까?
1. 제약조건의 추가 또는 삭제는 가능 (BUT 수정 불가능)
2. 제약조건의 활성화 OR 비활성화 가능
3. MODIFY절을 사용해 NOT NULL 추가 가능
제약조건 추가
ex 테이블에 있는 Col1컬럼 제약조건에
기본키(primary key)도 추가(기본키의 이름은 PK_Col1)
제약조건 삭제
ex 테이블에 있는 PK_Col1 제약조건 삭제
'Oracle 기본 개념' 카테고리의 다른 글
Oracle - 데이터베이스 모델링 (0) | 2022.11.29 |
---|---|
Oracle - 뷰(VIEW) (0) | 2022.11.27 |
Oracel - 테이블 생성.. 그거 어떻게 하는 건데? (0) | 2022.11.21 |
Oracle - 트랜잭션이란 무엇인가 (0) | 2022.11.21 |
Oracle - DML (0) | 2022.11.20 |