ALTER TABLE 로 제약 조건 추가하기 (CHECK / FOREIGN KEY) 쉽게 이해하기
잡학다식의 지식공방

IT/[SQL] Basic

ALTER TABLE 로 제약 조건 추가하기 (CHECK / FOREIGN KEY) 쉽게 이해하기

carpe08 2025. 5. 1. 10:04
320x100

SQL에서는 테이블을 만들 후에도 구조를 바꾸거나 규칙을 추가할 수 있습니다.
그중 가장 자주 사용되는 기능이 바로 ALTER TABLE로 제약 조건(CONSTRAINT)을 추가하는 것이죠.

오늘은 그중에서도 가장 많이 사용되는 두 가지 제약 조건인 FOREIGN KEYCHECK를 예제와 함께 쉽게 설명해드림니다!


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