제약 조건
제약조건을 지정한 열에는 제약 조건에 부합하지 않는 데이터를 저장할 수 없도록 한다. 제약 조건 지정 방식에 따라 기존 데이터의 수정이나 삭제 가능 여부도 영향을 받는다.
제약 조건의 종류
NOT NULL | NULL 불가 |
UNIQUE | 중복 불가 |
PRIMARY KEY | 중복 불가, NULL 불가 |
FOREIGN KEY | 다른 테이블의 열을 참조하여 존재하는 값만 입력 가능 |
CHECK( ) | 괄호 안의 조건식을 만족하는 데이터만 입력 가능 |
DEFAULT A | 값이 지정되지 않을 경우 A로 지정, 제약 조건은 아니지만 같은 위치에 지정 |
데이터 무결성
DB에 저장되는 데이터의 정확성과 일관성을 보장한다는 의미. 이를 위해 항상 유지해야 하는 기본 규칙을 가지고 있다.
영역 무결성 | 열에 저장되는 값의 적정 여부. 자료형, 적절한 형식, NULL 여부 등 정해 놓은 범위를 만족하는 데이터임을 규정 |
개체 무결성 | 유일하게 식별할 수 있는 기본키는 반드시 값을 가지고 있어야 하고 NULL이 될 수 없고 중복도 불가능하다는 것을 규정 |
참조 무결성 | 참조 테이블의 외래키 값은 참조 테이블의 기본키로서 존재해야 하며 NULL이 가능 |
제약 조건 확인하기
USER_CONSTRAINT 데이터 사전을 활용한다.
USER_CONSTRAINT 데이터 사전에서 CONSTRAINT_TYPE 값의 의미
C | CHECK, NOT NULL |
U | UNIQUE |
P | PRIMARY KEY |
R | FOREIGN KEY |
제약 조건 이름 직접 지정
1. 인라인 제약 조건 정의 방법(=열 레벨 제약 조건 정의 방법)
CREATE TABLE 테이블이름(
열이름 자료형 CONSTRAINT 제약조건이름 제약조건종류,
...
);
*FOREIGN KEY의 경우는
열이름 자료형 CONSTRAINT 제약조건이름 REFERENCES 참조테이블(참조할열) 추가옵션
가능한 추가옵션
ON DELETE CASCADE | 열 데이터를 삭제할 때 이 데이터를 참조하고 있는 데이터도 함께 삭제 |
ON DELETE SET NULL: | 열데이터를 삭제할 때 이 데이터를 참조하는 데이터를 NULL로 수정 |
2. 아웃오브라인 제약 조건 정의 방법(=테이블 레벨 제약 조건 정의 방법)
CREATE TABLE 테이블이름(
열이름 자료형,
...,
...,
CONSTRAINT 제약조건이름 제약조건종류 (열이름)
);
*FOREIGN KEY의 경우는
CONSTRAINT 제약조건이름 FOREIGN KEY(열) REFERENCES 참조테이블(참조할열)
이미 생성된 테이블에 제약 조건 지정
ALTER TABLE 테이블이름
MODIFY(열이름 CONSTRAINT 제약조건이름 제약조건종류);
이미 생성된 테이블의 제약 조건 이름 변경
ALTER TABLE 테이블이름
RENAME CONSTRAINT 변경전이름1 TO 변경후이름2
제약 조건 삭제
ALTER TABLE 테이블이름
DROP CONSTRAINT 제약조건이름;
제약 조건 비활성화, 활성화
1. 비활성화
ALTER TABLE 테이블이름
DISABLE [NOVALIDATE / VALIDATE(선택)] CONSTRAINT 제약조건이름;
2. 활성화
ALTER TABLE TABLE 테이블이름
ENABLE [NOVALIDATE / VALIDATE(선택)] CONSTRAINT 제약조건이름;
'BackEnd > DB, SQL' 카테고리의 다른 글
SQL 20편: PL/SQL 기초(블록, 변수와 상수 정의하기) (0) | 2022.01.18 |
---|---|
SQL 19편: 사용자, 권한, 롤 관리 (0) | 2022.01.16 |
SQL 17편: 객체(데이터 사전, 인덱스, 뷰, 시퀀스, 동의어) (0) | 2022.01.09 |
SQL 16편: 데이터 정의어 DDL(CREATE, ALTER, RENAME, TRUNCATE, DROP) (0) | 2022.01.09 |
SQL 15편: 트랜잭션과 세션 (ROLLBACK, COMMIT, 읽기 일관성, LOCK, HANG) (0) | 2022.01.03 |
댓글