MySQL - Check 제약 조건: 초보자 가이드
안녕하세요, 데이터베이스 열정가 되고자 하는 여러분! MySQL Check 제약 조건의 세계를 안내해드리게 되어 기쁩니다. 컴퓨터 과학을 몇 년 동안 가르쳐온 경험을 바탕으로, 새로운 개념이 얼마나 두려울 수 있는지 잘 알고 있습니다. 하지만 걱정 마세요 - 우리는 단계별로 진행할 것이며, 마지막에는 Check 제약 조건의 달인이 될 것입니다!
Check 제약 조건이란?
먼저 기본 개념을 알아보겠습니다. 친구들의 나이를 기록하고 있다고 가정해 봅시다. 부정수를 실수로 입력하거나 지나치게 높은 수를 입력하고 싶지 않을 텐데, 이때 Check 제약 조건이 유용합니다!
Check 제약 조건은 클럽의 보안원 같은 존재입니다 - 데이터가 테이블에 입력되는 것을 특정 조건을 만족하는지 확인합니다. 조건을 만족하지 못하면 입력을 허용하지 않습니다. 간단합니다!
MySQL Check 제약 조건
MySQL은 버전 8.0.16에서 Check 제약 조건을 도입했습니다. 이전 버전을 사용하고 계신다면 걱정 마세요 - 나중에 트리거를 사용하는 대체 방법을 다루겠습니다.
ابتدائية 예제를 보겠습니다:
CREATE TABLE friends (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT CHECK (age >= 0 AND age <= 120)
);
이 예제에서 우리는 'friends' 테이블을 생성하고 있습니다. CHECK 제약 조건은 'age' 값이 0과 120 사이에 있는지 확인합니다. 보안원에게 "0과 120 사이의 나이만 허용하라"고 말하는 것과 같습니다!
트리거를 사용한 Check 제약 조건
MySQL의 이전 버전을 사용하는 분들도 마음을 편하게 하세요! 트리거를 사용하여 유사한 기능을 달성할 수 있습니다. 다음과 같이 합니다:
DELIMITER //
CREATE TRIGGER check_age
BEFORE INSERT ON friends
FOR EACH ROW
BEGIN
IF NEW.age < 0 OR NEW.age > 120 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = '나이는 0과 120 사이여야 합니다';
END IF;
END;//
DELIMITER ;
이 트리거는 보안원처럼 작동하여, 테이블에 새로운 항목이 입력되기 전에 확인합니다.
단일 열에 Check 제약 조건 추가
우리는 'friends' 테이블에 저장된 이름이 최소 2자리 이상인지 확인하고 싶을 수 있습니다:
ALTER TABLE friends
ADD CONSTRAINT check_name_length
CHECK (LENGTH(name) >= 2);
이제 2자리 미만의 이름을 입력하려고 시도할 때 오류가 발생합니다. 보안원이 "이름이 너무 짧습니다. 들어올 수 없습니다!"라고 말하는 것과 같습니다!
여러 열에 Check 제약 조건 추가
때로는 여러 열을 동시에 확인해야 합니다. 예를 들어, 친구의 좋아하는 숫자가 항상 그의 나이보다 작은지 확인하고 싶다면:
ALTER TABLE friends
ADD COLUMN favorite_number INT,
ADD CONSTRAINT check_favorite_number
CHECK (favorite_number < age);
이 제약 조건은 두 열을 동시에 확인합니다. 보안원이 여러분의 신분증과 티켓을 확인한 후 입장을 허용하는 것과 같습니다!
기존 테이블에 Check 제약 조건 추가
이미 테이블이 존재하는 경우 Check 제약 조건을 추가하고 싶다면? 문제 없습니다! ALTER TABLE 명령어를 사용합니다:
ALTER TABLE friends
ADD CONSTRAINT check_age
CHECK (age >= 0 AND age <= 120);
이렇게 하면 기존 'friends' 테이블에 나이 확인을 추가합니다. 기존 클럽에 새로운 보안원을 고용하는 것과 같습니다!
Check 제약 조건 제거
때로는 Check 제약 조건을 제거해야 할 수 있습니다. 다음과 같이 합니다:
ALTER TABLE friends
DROP CONSTRAINT check_age;
이렇게 하면 'friends' 테이블에서 'check_age' 제약 조건을 제거합니다. 보안원에게 "가서 쉬어라. 더 이상 나이 확인이 필요하지 않다"고 말하는 것과 같습니다.
클라이언트 프로그램을 사용한 Check 제약 조건
MySQL Workbench와 같은 클라이언트 프로그램을 사용하는 경우, GUI를 통해 Check 제약 조건을 추가할 수 있습니다. 일반적으로 'Alter Table' 옵션에서 찾을 수 있습니다. 기억하시자, SQL이 여전히 실행되고 있으며, GUI는 사용자 친화적으로 만들어둔 것입니다!
결론
이제 여러분은 MySQL Check 제약 조건의 세계로的第一步을 걸었습니다. 이 제약 조건들은 데이터베이스의 보안원입니다 - 나쁜 데이터를 밖으로 내보내고, 좋은 데이터만 들어오도록 합니다.
다음은 우리가 다루었던 방법의 요약입니다:
방법 | 설명 |
---|---|
CREATE TABLE with CHECK | 새로운 테이블 생성 시 제약 조건 추가 |
트리거 | 이전 MySQL 버전에서 사용 |
ALTER TABLE ADD CONSTRAINT | 기존 테이블에 제약 조건 추가 |
ALTER TABLE DROP CONSTRAINT | 기존 제약 조건 제거 |
이 개념들을 연습하고, 다양한 제약 조건을 실험해 보세요. 얼마 지나지 않아 데이터베이스 보안원의 달인이 될 것입니다! 데이터베이스에서 좋은 제약 조건은 좋은 이웃을 만듭니다. 행복하게 코딩하세요!
Credits: Image by storyset