MySQL에서 조건문은 특정 조건을 만족할 때 실행할 작업을 지정하는 데 사용돼.
대표적인 조건문은 IF, CASE, IFNULL, COALESCE 등이 있어.
IF 문 (단순 조건문)IF(조건, 참일 때 반환 값, 거짓일 때 반환 값) 형태로 사용돼.SELECT 문에서 특정 조건에 따라 다른 값을 반환할 때 사용.SELECT name, salary, IF(salary >= 5000, 'High', 'Low') AS salary_level
FROM employees;
📌 설명:
salary가 5000 이상이면 'High', 아니면 'Low' 반환.IFNULL (NULL 값 처리)IFNULL(컬럼명, 대체값): 컬럼 값이 NULL이면 대체값을 반환해.SELECT name, IFNULL(bonus, 0) AS bonus_amount FROM employees;
📌 설명:
bonus 컬럼이 NULL이면 0 반환.COALESCE (여러 개 값 중 첫 번째 NOT NULL 반환)COALESCE(value1, value2, ..., valueN):NULL이 아닌 값을 반환.SELECT name, COALESCE(bonus, default_bonus, 0) AS final_bonus FROM employees;
📌 설명:
bonus가 NULL이면 default_bonus를 사용하고,default_bonus도 NULL이면 0을 반환.CASE 문 (다중 조건)CASE는 여러 개의 조건을 처리할 때 사용돼.IF보다 더 복잡한 조건을 다룰 수 있어.CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
ELSE 기본결과
END
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' 반환.CASE를 UPDATE에서 사용하기CASE 문은 UPDATE에도 활용 가능해.UPDATE employees
SET salary = CASE
WHEN department = 'IT' THEN salary * 1.1
WHEN department = 'HR' THEN salary * 1.05
ELSE salary * 1.02
END;
📌 설명:
10% 인상,5% 인상,2% 인상.CASE를 ORDER BY에서 사용하기CASE를 ORDER BY에서 사용하면 커스텀 정렬이 가능해.SELECT * FROM customers
ORDER BY
CASE
WHEN membership = 'VIP' THEN 1
WHEN membership = 'Gold' THEN 2
WHEN membership = 'Silver' THEN 3
ELSE 4
END;
📌 설명:
VIP → Gold → Silver 순서로 정렬.CASE를 GROUP BY와 함께 사용하기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이 아닌 값 반환 |
CASE | CASE WHEN score >= 90 THEN 'A' ELSE 'F' END | 다중 조건 처리 |
CASE in ORDER BY | ORDER BY CASE WHEN role = 'Admin' THEN 1 ELSE 2 END | 특정 조건에 따라 정렬 |