MySQL에서 조건문을 다룰 때 IF와 CASE 구문을 자주 보게 됩니다.
겉보기엔 비슷해 보이지만, 실제로는 **"흐름 제어"**냐 **"단순 표현식"**이냐에 따라 쓰임새가 달라집니다.
흐름 제어 (IF 문)
흐름 제어란, 조건에 따라 쿼리 실행 자체를 분기하는 것을 의미합니다.
즉, 어떤 조건에서는 INSERT, 다른 조건에서는 UPDATE처럼 실행 흐름을 제어합니다.
예시:
IF score >= 90 THEN
INSERT INTO awards VALUES ('A등급');
ELSEIF score >= 80 THEN
INSERT INTO awards VALUES ('B등급');
ELSE
INSERT INTO awards VALUES ('F등급');
END IF;
특징
- 프로시저, 함수, 트리거 내부에서 사용
- 쿼리 실행 자체를 바꿀 수 있음
- 프로그래밍 언어의 if-else와 유사
단순 표현식 (CASE 문, IF 함수)
단순 표현식은 조건에 따라 값만 선택하는 방식입니다.
즉, 실행 흐름은 변하지 않고, 결과 값만 달라집니다.
예시 (CASE):
SELECT
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
ELSE 'F'
END AS grade
FROM exam;
예시 (IF 함수):
SELECT
name,
IF(score >= 60, '합격', '불합격') AS result
FROM exam;
특징
- SELECT, WHERE, ORDER BY 등 조회문 어디서든 사용 가능
- 여러 쿼리를 제어하지 않고 하나의 값만 반환
정리
- 흐름 제어(IF) → 실행 자체를 갈라치기 (INSERT, UPDATE, CALL 등 제어)
- 단순 표현식(CASE, IF 함수) → 값만 다르게 반환 (쿼리 흐름은 동일)
따라서,
- 프로시저 내부 로직 제어 → IF
- 조회문에서 조건에 따른 값 반환 → CASE 또는 IF(expr, a, b)
한 줄 요약:
"흐름 제어는 실행을 바꾸는 것, 단순 표현식은 값만 바꾸는 것"
'컴퓨터 과학 > 데이터 베이스' 카테고리의 다른 글
| MySQL 프로시저에서 IN과 OUT 이해하기 (1) | 2025.08.30 |
|---|---|
| MySQL 제약조건(Constraints) 정리 (2) | 2025.08.28 |
| MySQL에서 조건문 사용하기: IF vs CASE (0) | 2025.08.28 |
| MySQL에서 SELECT ... INTO 구문 이해하기 (1) | 2025.08.28 |
| MySQL 트리거: BEFORE vs AFTER (0) | 2025.08.23 |