반응형
# 목적
: 데이터베이스의 무결성 제약조건(Constraint) 정리
제약조건(Constraint) 이란?
: 데이터의 무결성을 지키기 위해 제한된 조건으로,
테이블에 유효하지 않은 데이터가 입력되는 것을 방지한다.
제약조건의 종류
1. NOT NULL
- 해당 컬럼에 NULL값이 입력되지 못하도록 지정하는 제약조건
- 사용예시)
CREATE TATBLE USERS (
USER_NO,
USER_ID VARCHAR2(255) NOT NULL, -- 필수 입력값
USER_PASSWORD VARCHAR2(255) NOT NULL, -- 필수 입력값
USER_NAME VARCHAR2(255) NOT NULL, -- 필수 입력값
USER_EMAIL VARCHAR2(255) , -- 선택 입력값
...
)
-- USER_ID, USER_PASSWORD, USER_NAME은 NULL값 허용X
2. UNIQUE
- 해당 컬럼의 값은 테이블 전체에서 고유한 값을 가지도록 지정하는 제약조건
- NULL값 입력 가능
- 사용예시)
CREATE TABLE USERS (
USER_NO NUMBER(10),
USER_ID VARCHAR2(255) UNIQUE,
USER_PASSWORD VARCHAR2(255) ,
USER_NAME VARCHAR2(255) ,
USER_EMAIL VARCHAR2(255) UNIQUE,
...
)
-- USER_ID, USER_EMAIL에 대해 동일한 값을 가지는 다른 행은 저장 불가
3. PRIMARY KEY
- 테이블의 각 행을 고유하게 식별할 수 있는 값으로 지정하는 제약조건
- 테이블 당 하나만 지정 가능
- NULL값 입력 불가, 고유한 값을 가져야 함
(보통 시퀀스에서 획득한 일련번호 사용)
- 사용예시)
CREATE TABLE USERS (
USER_NO NUMBER(10) PRIMARY KEY,
USER_ID VARCHAR2(255),
USER_PASSWORD VARCHAR2(255),
USER_NAME VARCHAR2(255),
USER_EMAIL VARCHAR2(255),
...
)
-- USER_NO : USERS 테이블에서 행을 대표하는 컬럼
4. FOREIGN KEY
- 다른 테이블 혹은 같은 테이블 특정 컬럼의 값과 관련된 값만 가지도록 지정하는 제약조건
- 사용예시)
CREATE TABLE DEPARTMENTS (
DEPT_NO NUMBER(4) PRIMARY KEY,
DEPT_NAME VARCHAR2(255) NOT NULL,
...
)
CREATE TABLE EMPLOYEES (
EMP_NO NUMBER(4),
EMP_NAME VARCHAR2(255),
DEPT_NO NUMBER(4) REFERENCES DEPARTMENTS(DEPT_NO) -- 직원의 소속 부서 번호
...
)
-- EMPLOYEES의 DEPT_NO 컬럼은 DEPARTMENTS의 DEPT_NO 컬럼의 값을 참조하는 컬럼
-- EMPLOYEES의 DEPT_NO 컬럼에는 이 컬럼이 참조하고 있는 컬럼이 가지고 있는 값만 허용됨
-- EMPLOYEES의 DEPT_NO 컬럼에 NOT NULL 제약조건이 적용되어 있지 않은 경우, NULL값 저장 가능
-- FOREIGN KEY 제약조건으로 참조되는 컬럼은 반드시 PRIMARY KEY 제약조건 혹은 UNIQUE 제약조건이 적용되어 있어야 함
5. CHECK
- 제시된 조건식을 만족하는 값만 컬럼에 저장 가능하도록 지정하는 제약조건
- 사용예시)
CREATE TABLE USERS (
USER_ID,
USER_NAME,
USER_GENDER CHAR(1) CHECK (USER_GENDER IN ('F', 'M')), -- 성별은 'F'나 'M'만 가능
UESR_AGE NUMBER(3) CHECK (USER_AGE >= 1 AND USER_AGE < 150)
)
제약조건의 추가/삭제
1. 외래키 제약조건 추가하기
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건별칭 FOREIGN KEY (컬럼명)
REFERENCES 부모테이블명 (컬럼명);
2. 제약조건 삭제하기
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건별칭;
3. 제약조건 비활성화하기
ALTER TABLE 테이블명 DISABLE CONSTRAINT 제약조건별칭;
4. 제약조건 활성화하기
ALTER TABLE 테이블명 ENABLE CONSTRAINT 제약조건별칭;
< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >
🔗 velog 버전 보기 : https://velog.io/@ryuneng2/DB-제약조건-constraint
'BackEnd > Database' 카테고리의 다른 글
[MySQL] DB 사용자 및 데이터베이스 생성 후 연결까지 (0) | 2025.01.20 |
---|---|
[DB] TOP-N 분석과 분석함수 (0) | 2025.01.20 |
[DB] Oracle의 DDL (0) | 2025.01.20 |
[DB] Transaction(트랜잭션) - Commit, Rollback (0) | 2025.01.20 |
[DB] SubQuery(서브쿼리) (0) | 2025.01.20 |