본문 바로가기

[SQL] 테이블을 안전하게 관리하는 기초 - Constraints 제약 걸기

@xuv22025. 7. 21. 20:51

컬럼을 생성할 때, 테이블을 안전한게 관리하고 유지하기 우해 제약 조건을 걸어둘 수 있다.

대표적인 예시는 다음과 같다.

1. 이 컬럼은 NOT NULL 이어야 한다

2. 이 컬럼의 데이터는 중복되면 안된다 -> 데이터가 UNIQUE 해야한다.

3. 음수는 들어오면 안되고 무조건 양수만 들어오는지 CHECK

4. 현재 컬럼을 PK 로 지정해야한다.


빈 데이터 금지 - NOT NULL

CREATE TABLE new_table (
    id INT NOT NULL,
    이름 VARCHAR(100) NOT NULL,
    나이 INT
)

이렇게 NOT NULL 옵션을 붙이게 되면, id와 이름은 비어 있을 수 없다. 

까먹고 데이터를 입력하지 않으면 커밋이 불가하다.

 


중복 값 없어야 함 - UNIQUE

CREATE TABLE new_table (
    id INT UNIQUE,
    이름 VARCHAR(100),
    나이 INT
)

이렇게 되면 모든 행에서 반드시 각각 다른 값을 id에 가지고 있게 된다.

 

다음과 같이 여러 컬럼을 묶어서 작성해도 되는데, 이는 작동 방법이 좀 다르다.

CREATE TABLE new_table (
    id INT,
    이름 VARCHAR(100),
    나이 INT,
    UNIQUE(이름, 나이)
)

이름과 나이 두가지 데이터가 완전 equals 해야 데이터 저장을 막는다.

id 이름 나이
1 aaa 20
2 aaa 21

이런 데이터는 저장이 되지만, 

id 이름 나이
1 aaa 20
2 aaa 20

이런 데이터는 저장이 되지 않는다.


검증 로직 - CHECK()

CREATE TABLE new_table (
    id INT,
    이름 VARCHAR(100),
    나이 INT CHECK (나이 > 0),
)

check 안에 조건식을 넣어두면, 해당 컬럼에는 음수 작성이 불가하게 된다. 조건식이니 AND, OR 연산자 사용가능.

 


유일한 식별자 만들기 - PRIMARY KEY

PK에 대한 포스팅은 이전글을 참고하자

 

[DB Modeling] Primary Key (PK), Foreign Key(FK)

패널티킥, 프리킥 아니다.. 진짜 뒤진다..Primary Key(PK) -> 기본키우리는 서로를 구분할 수 있도록 각자 고유의 주민 번호가 존재한다.주체가 사람이 아닌 다른 객체일 때, 각 객체를 구분하기 위해

bdisappointed.tistory.com

 

기본키 설정은 다음과 같이 할 수 있는데,

CREATE TABLE new_table (
    id INT PRIMARY KEY,
    이름 VARCHAR(100),
    나이 INT CHECK (나이 > 0),
)

id가 중복되지 않는 유일한 식별자로써 기본키로 사용할 수 있게 된다. 

 

PK 의 국룰 AUTO_INCREMENT

CREATE TABLE new_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    이름 VARCHAR(100),
    나이 INT,
)

이렇게 컬럼을 생성하면 id컬럼의 값이 저장될 때마다 숫자가 1씩 증가하며 id가 생성된다.


컬럼 다 만들고 마지막에 제약 주기 - CONSTRAINT()

CREATE TABLE new_table (
    id INT,
    이름 VARCHAR(100),
    나이 INT,
    PRIMARY KEY (id),
    CHECK(나이 > 10)
)

이렇게 컬럼을 다 생성하고 마지막에 제약을 줘도 되지만, 다음과 같이 이름을 부여하여 작성할 수도 있다.

CREATE TABLE new_table (
    id INT,
    이름 VARCHAR(100),
    나이 INT,
    CONSTRAINT 제약조건작명 PRIMARY KEY (id),
    CONSTRAINT 제약조건작명2 CHECK(나이 > 10)
)

 

xuv2
@xuv2 :: xuvlog

폭싹 늙었수다

목차