컴퓨터 과학/데이터 베이스

MySQL 조건문: 흐름 제어 vs 단순 표현식

Data Jun 2025. 8. 28. 11:48

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)

 

한 줄 요약:
"흐름 제어는 실행을 바꾸는 것, 단순 표현식은 값만 바꾸는 것"