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 |