1. 데이터 무결성을 위한 제약조건
1) 무결성 제약 조건의 개념과 종류
- 데이터 무결성 제약 조건(Data Integrity Constraint Rule)이란 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러 가지 규칙을 말함
| 무결성 제약 조건 | 역할 |
| NOT NULL | NULL을 허용하지 않는다. |
| UNIQUE | 중복된 값을 허용하지 않는다. 항상 유일한 값을 갖도록 한다. |
| PRIMARY KEY | NULL을 허용하지 않고 중복된 값을 허용하지 않는다. NOT NULL 조건과 UNIQUE 조건을 결합한 형태이다. |
| FOREIGN KEY | 참조되는 테이블의 칼럼의 값이 존재하면 허용한다. |
| CHECK | 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용한다. |
2) 제약 조건 확인하기
- OWNER는 제약 조건을 소유한 사용자명을 저장하는 컬럼
- CONSTRAINT_NAME은 제약 조건 명을 저장하는 컬럼
- CONSTRAINT_TYPE는 제약 조건 유형을 저장하는 컬럼
CONSTRAINT_TYPE은 P, R, U, C 4가지 값 중에 하나를 갖음
| CONSTRAINT_TYPE | 의미 |
| P | PRIMARY KEY |
| R | FOREIGN KEY |
| U | UNIQUE |
| C | CHECK, NOT NULL |
- 제약 조건은 5개라고 했는데 제약 조건 유형은 4가지
- 제약 조건 중에 NOT NULL 은 컬럼에 NULL 값이 저장되어서는 안 된다는 조건
- 즉, NOT NULL 조건은 컬럼에 NULL 값을 체크하는 조건으로 처리되기 때문에 CHECK 를 나타내는 C로 표현
- C는 CHECK 조건과 NOT NULL 조건을 모두 포함
- 제약 조건 유형은 제약 조건의 이니셜로 표현되지만 FOREIGN KEY 만은 R로 표현
- 이는 FOREIGN KEY는 PRIMARY KEY 를 참조하기 때문에 참조 무결성을 지켜야 함
- 그러므로 참조 무결성(REFERENCE INTEGRITY)의 이니셜인 R을 FOREIGN KEY 의 제약 조건 유형으로 FOREIGN KEY 의 제약 조건 유형이 R인 이유가 REFERENCE INTEGRITY 의 이니셜로 인한 것이라는 것까지만 이해하기 바람
- TABLE_NAME은 각 제약 조건들이 속한 테이블의 이름 , 제약 조건 유형이 C인 경우에는 NOT NULL 조건과 CHECK 조건이 모두 포함되는데 NOT NULL 조건인 경우에는 따로 언급되는 내용이 없지만 CHECK 조건일 경우에는 어떤 내용이 조건으로 사용되었는지를 기록하고 있어야 하는데, SEARCH_CONDITION은 제약 조건 유형이 C인 경우 각 행에 대한 조건을 설명
- R_CONSTRAINT_NAME은 제약 조건이 FOREIGN KEY인 경우 어떤 PRIMARY KEY를 참조했는지에 대한 정보를 갖음
3) 필수 입력을 위한 NOT NULL 제약조건
- 새로운 사원이 입사하여 사원의 정보를 입력하는데 사원번호와 사원 명이 불 분명하여 데이터가 저장되지 않았다면 누구의 직급인지, 누구의 부서번호인지를 모르게 되므로 자료로서의 의미를 갖기 어렵다.

- 따라서 사원의 정보를 입력할 때 반드시 입력해야하는 선택이 아닌 필수 입력을 요구하는 컬럼이 있다면 위와 같이 NULL 값이 저장되지 못하도록 제약 조건을 설정해야 함
- 따라서 사원의 정보를 입력할 때 반드시 입력해야하는 선택이 아닌 필수 입력을 요구하는 컬럼이 있다면 위와 같이 NULL 값이 저장되지 못하도록 제약 조건을 설정해야 함
- NOT NULL 제한 조건은 해당 컬럼에 데이터를 추가하거나 수정할 때 NULL 값이 저장되지 않게 제약을 걸어주는 것으로서 사원번호와 사원명과 같이 자료가 꼭 입력되게 하고 싶을 때 사용
a. 칼럼 레벨 정의 방법으로 제약 조건 지정하기
- NOT NULL 제약 조건을 지정하지 않으면 위 예에서처럼 NULL 값이 저장
- 특정 컬럼에 NULL 값이 저장되지 못하도록 하려면 NOT NULL 제한 조건을 설정
- 제약 조건을 설정하는 방법은 컬럼 레벨과 테이블 레벨 두 가지 방식이 있습니다. NOT NULL 제약 조건은 컬럼 레벨로만 정의
column_name data_type constraint_type
4) 유일한 값만 허용하는 UNIQUE 제약 조건
- UNIQUE 제약 조건이란 특정 칼럼에 대해 자료가 중복되지 않게 하는 것
- 지정된 칼럼에는 유일한 값이 수록되게 하는 것
UNIQUE 제약 조건을 설정하여 테이블 생성하기
CREATE TABLE EMP03(
EMPNO NUMBER(4) UNIQUE,
ENAME VARCHAR2(10) NOT NULL,
JOB VARCHAR2(9),
DEPTNO NUMBER(2)
);
5) 컬럼 레벨로 제약 조건명을 명시해서 제약 조건 설정하기
column_name data_type CONSTRAINT constraint_name constraint_type
- 사용자 제약 조건 명을 설정하기 위해서는 CONSTRAINT라는 키워드와 함께 제약 조건 명을 기술하면 됩니다는 것을 확인할 수 있음
- 제약 조건 명(constraing_name)은 다음과 같은 명명 규칙을 준수해서 작성하는 것이 좋음
[테이블명]_[칼럼명]_[제약 조건 유형]
칼럼 레벨로 제약 조건명 명시하기
CREATE TABLE EMP04(
EMPNO NUMBER(4) CONSTRAINT EMP04_EMPNO_UK UNIQUE,
ENAME VARCHAR2(10) CONSTRAINT EMP04_ENAME_NN NOT NULL,
JOB VARCHAR2(9),
DEPTNO NUMBER(2)
);
'DB > Oracle' 카테고리의 다른 글
| Oracle DB #11 가상 테이블인 뷰 (0) | 2021.06.10 |
|---|---|
| Oracle DB #10 데이터 무결성을 위한 제약 조건 (0) | 2021.06.09 |
| Oracle DB #8 테이블 내용을 추가, 삭제, 수정하는 DML (0) | 2021.06.03 |
| Oracle DB #7 테이블 구조 생성 , 변경, 삭제 하는 DDL (0) | 2021.06.02 |
| Oracle DB #6 조인 , 서브 쿼리 (0) | 2021.05.31 |