320x100
SQL에서는 테이블을 만들 후에도 구조를 바꾸거나 규칙을 추가할 수 있습니다.
그중 가장 자주 사용되는 기능이 바로 ALTER TABLE로 제약 조건(CONSTRAINT)을 추가하는 것이죠.
오늘은 그중에서도 가장 많이 사용되는 두 가지 제약 조건인 FOREIGN KEY와 CHECK를 예제와 함께 쉽게 설명해드림니다!
1️⃣ FOREIGN KEY – 두 테이블 간 연결 만들기
📋 FOREIGN KEY라는?
FOREIGN KEY(외래 키)는 다른 테이블의 값을 참조하게 만들어주는 제약 조건이에요.
쉽게 말하면, "이 값은 바로 저 테이블에 있어야 해!"라는 규칙입니다.
🎯 예제: 학생(Student)과 학교(School)
CREATE TABLE school (
id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(100),
school_id INT
);
이제 student.school_id는 school.id를 참조해야 해요. 그렇지 않으면 말이 안 되죠!
이러다가 FOREIGN KEY를 추가합니다:
ALTER TABLE student
ADD CONSTRAINT fk_student_school
FOREIGN KEY (school_id)
REFERENCES school(id);
✅ 어떻게 되나요?
- student 테이블에 없는 학교 ID를 넣으려고 하면 오류가 나요.
- 데이터 무게성(정확성)이 복잡됩니다.
- fk_student_school은 제약 조건의 이름으로, 나중에 삭제하거나 수정할 때 유용해요.
2️⃣ CHECK – 값의 범위나 조건 제한하기
📋 CHECK라는?
CHECK는 특정 컬럼의 값이 어떻다한 조건을 바로 맞추어야 한다는 제약 조건이에요.
🎯 예제: 직원(Employee)의 나이는 18세 이상이어야 함
CREATE TABLE employee (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
);
age 컬럼에 조건을 걸어줍니다:
ALTER TABLE employee
ADD CONSTRAINT chk_employee_age
CHECK (age >= 18);
또는 할인율(discount_rate)은 바로 0.00 이상 1.00 이하여야 한다면?
ALTER TABLE employee
ADD CONSTRAINT chk_discount
CHECK (discount_rate BETWEEN 0.00 AND 1.00);
✅ CHECK가 하는 일
- 조건을 맞지 않으면 데이터를 삽입하거나 수정할 수 없습니다.
- 잘못된 데이터 유입을 미리 차단해주는 강력한 도움이입니다.
📚 실전 예제 – 쇼핑몰 주문 테이블
-- 고객 테이블
CREATE TABLE customer (
id INT PRIMARY KEY,
name VARCHAR(100)
);
-- 주문 테이블
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
total_amount DECIMAL(10,2),
discount_rate DECIMAL(4,2)
);
-- 외래 키 추가: 고객 ID는 customer 테이블을 참조
ALTER TABLE orders
ADD CONSTRAINT fk_orders_customer
FOREIGN KEY (customer_id)
REFERENCES customer(id);
-- 할인율 체크 조건: 0.00 이상 1.00 이하
ALTER TABLE orders
ADD CONSTRAINT chk_discount_rate
CHECK (discount_rate BETWEEN 0.00 AND 1.00);
✍️ 마무리 정리
제약 조건 | 설명 |
FOREIGN KEY | 다른 테이블의 값을 참조해야만 입력 가능 |
CHECK | 특정 조건을 맞지 않으면 입력 불가 |
- 제약 조건은 데이터베이스의 정확성과 안전성을 지키는 필요한 장치입니다.
- 첫 테이블 생성 시에 뒤입해도 되고, ALTER TABLE로 나중에 추가할 수도 있습니다.
- 제약 조건 이름은 오류 메시지나 수정 관리 시 유용하니 의미 있게 지어주는 것을 참고하세요!
[SQL 쿡북]
https://link.coupang.com/a/cp14TA
SQL 쿡북:모든 SQL 사용자를 위한 쿼리 완벽 가이드 - 프로그래밍 언어 | 쿠팡
쿠팡에서 SQL 쿡북:모든 SQL 사용자를 위한 쿼리 완벽 가이드 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 프로그래밍 언어 제품도 바로 쿠팡에서 확인할 수 있습니다.
www.coupang.com
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
320x100
320x100
'빅데이터 관련 자료 > [SQL] Basic' 카테고리의 다른 글
SQL 윈도우 함수 (Window Functions) 완전 정복 (0) | 2025.05.01 |
---|---|
NULL 처리의 함정과 COALESCE, IS NULL 전략 (0) | 2025.04.30 |
인덱스(Index)의 작동 원리와 성능 이슈 (1) | 2025.04.29 |
SQL에서 DDL과 JOIN은 어떻게 다를까? (1) | 2025.04.28 |
서브쿼리 vs CTE (Common Table Expressions), 뭐가 다를까? (0) | 2025.04.27 |