본문 바로가기

데이터/MySQL

[MySQL] CHECK 제약조건

CHECK 제약조건

MySQL에서는 버전 8.0.16부터 CHECK 제약조건을 지원합니다. CHECK 제약조건은 특정 열에 저장될 수 있는 값의 범위를 제한하여 데이터의 유효성을 검증하는 데 사용됩니다.

 

CHECK 제약조건의 특징

1. 값의 범위 제한

CHECK 제약조건은 열에 저장될 수 있는 값의 범위를 지정할 수 있습니다. 이를 통해 유효하지 않은 데이터를 방지할 수 있습니다.

 

2. 리터럴, 서브쿼리, 외부 함수 사용 가능

CHECK 제약조건은 다양한 형태의 조건을 지정할 수 있습니다. 리터럴, 서브쿼리, 외부 함수 등을 활용할 수 있습니다.

 

CHECK 제약조건의 적절한 사용 사례

1. 열의 값 범위 제한

특정 열에 유효한 값의 범위를 제한하고자 할 때 사용합니다.

예를 들어, 나이가 음수가 될 수 없는 경우 CHECK 제약을 사용하여 이를 방지할 수 있습니다.

 

2. 열 간의 관계 정의

두 개 이상의 열 간에 특정한 관계를 강제하고 할 때 사용됩니다.

예를 들어, 시작일과 종료일이 서로 일치하지 않아야 하는 경우 CHECK 제약을 사용할 수 있습니다.

 

CHECK 제약조건 예제

-- 테이블 생성 (나이가 18 이상인 경우에만 허용되는 사용자 테이블)
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    age INT CHECK (age >= 18),
    email VARCHAR(100) NOT NULL
);

-- 데이터 삽입 (나이가 18 미만인 경우 - 오류 발생)
INSERT INTO users (user_id, username, age, email)
VALUES (1, 'john_doe', 17, 'john@example.com');

-- 올바른 데이터 삽입
INSERT INTO users (user_id, username, age, email)
VALUES (2, 'jane_smith', 25, 'jane@example.com');

-- 데이터 조회
SELECT * 
FROM users;

위 예제에서 `age` 열에 CHECK 제약이 걸려 있습니다. 이를 통해 나이가 18세 미만인 데이터를 삽입하려고 시도하면 오류가 발생합니다.

'데이터 > MySQL' 카테고리의 다른 글

[MySQL] PRIMARY KEY  (1) 2023.12.06
[MySQL] AUTO INCREMENT  (1) 2023.12.06
[MySQL] NOT NULL 제약조건  (1) 2023.12.06
[MySQL] UNIQUE 제약조건  (1) 2023.12.06
[MySQL] TINYINT(1) 데이터 타입  (2) 2023.12.05