MySQL 조건문

stone tiger·2025년 2월 5일

MySQL

목록 보기
5/11

MySQL 조건문(Conditional Statements) 완벽 정리

MySQL에서 조건문은 특정 조건을 만족할 때 실행할 작업을 지정하는 데 사용돼.
대표적인 조건문은 IF, CASE, IFNULL, COALESCE 등이 있어.


1. IF 문 (단순 조건문)

  • IF(조건, 참일 때 반환 값, 거짓일 때 반환 값) 형태로 사용돼.
  • 주로 SELECT 문에서 특정 조건에 따라 다른 값을 반환할 때 사용.

✅ 예제 1: 급여가 5000 이상이면 "High", 아니면 "Low"

SELECT name, salary, IF(salary >= 5000, 'High', 'Low') AS salary_level
FROM employees;

📌 설명:

  • salary5000 이상이면 'High', 아니면 'Low' 반환.

2. IFNULL (NULL 값 처리)

  • IFNULL(컬럼명, 대체값): 컬럼 값이 NULL이면 대체값을 반환해.

✅ 예제 2: 직원의 보너스가 NULL이면 0으로 변경

SELECT name, IFNULL(bonus, 0) AS bonus_amount FROM employees;

📌 설명:

  • bonus 컬럼이 NULL이면 0 반환.

3. COALESCE (여러 개 값 중 첫 번째 NOT NULL 반환)

  • COALESCE(value1, value2, ..., valueN):
    여러 값 중 가장 먼저 NULL이 아닌 값을 반환.

✅ 예제 3: 직원별 보너스가 없으면 기본 보너스 사용

SELECT name, COALESCE(bonus, default_bonus, 0) AS final_bonus FROM employees;

📌 설명:

  • bonusNULL이면 default_bonus를 사용하고,
    default_bonusNULL이면 0을 반환.

4. CASE 문 (다중 조건)

  • CASE여러 개의 조건을 처리할 때 사용돼.
  • IF보다 더 복잡한 조건을 다룰 수 있어.

📌 기본 문법

CASE 
    WHEN 조건1 THEN 결과1
    WHEN 조건2 THEN 결과2
    ELSE 기본결과
END

✅ 예제 4: 점수에 따라 등급 부여

SELECT name, score,
    CASE 
        WHEN score >= 90 THEN 'A'
        WHEN score >= 80 THEN 'B'
        WHEN score >= 70 THEN 'C'
        ELSE 'F'
    END AS grade
FROM students;

📌 설명:

  • 점수(score)가 90 이상이면 'A',
    80~89'B', 70~79'C',
    그 외는 'F' 반환.

5. CASEUPDATE에서 사용하기

  • CASE 문은 UPDATE에도 활용 가능해.

✅ 예제 5: 부서별 급여 조정

UPDATE employees
SET salary = CASE 
    WHEN department = 'IT' THEN salary * 1.1
    WHEN department = 'HR' THEN salary * 1.05
    ELSE salary * 1.02
END;

📌 설명:

  • IT 부서는 급여 10% 인상,
    HR 부서는 5% 인상,
    그 외는 2% 인상.

6. CASEORDER BY에서 사용하기

  • CASEORDER BY에서 사용하면 커스텀 정렬이 가능해.

✅ 예제 6: VIP 고객을 먼저 정렬

SELECT * FROM customers
ORDER BY 
    CASE 
        WHEN membership = 'VIP' THEN 1
        WHEN membership = 'Gold' THEN 2
        WHEN membership = 'Silver' THEN 3
        ELSE 4
    END;

📌 설명:

  • VIPGoldSilver 순서로 정렬.

7. CASEGROUP BY와 함께 사용하기

  • 특정 조건에 따라 그룹핑하고 싶을 때 사용 가능.

✅ 예제 7: 급여 등급별 직원 수 구하기

SELECT 
    CASE 
        WHEN salary >= 7000 THEN 'High Salary'
        WHEN salary >= 5000 THEN 'Medium Salary'
        ELSE 'Low Salary'
    END AS salary_group,
    COUNT(*) AS employee_count
FROM employees
GROUP BY salary_group;

📌 설명:

  • 급여 등급(High, Medium, Low)으로 그룹을 나누고,
    각 그룹에 속한 직원 수를 계산.

📌 정리

조건문사용 예설명
IF(조건, 참, 거짓)IF(salary >= 5000, 'High', 'Low')단순 조건
IFNULL(컬럼, 대체값)IFNULL(bonus, 0)NULL이면 대체값 반환
COALESCE(값1, 값2, ...)COALESCE(bonus, default_bonus, 0)여러 값 중 첫 번째 NULL이 아닌 값 반환
CASECASE WHEN score >= 90 THEN 'A' ELSE 'F' END다중 조건 처리
CASE in ORDER BYORDER BY CASE WHEN role = 'Admin' THEN 1 ELSE 2 END특정 조건에 따라 정렬

0개의 댓글