1 분 소요


MySQL의 조건문 및 제어 흐름 함수 정리

MySQL에서는 조건문제어 흐름 함수를 통해 데이터를 조건에 맞게 처리하고, 복잡한 논리를 구현할 수 있습니다.
이를 사용하면 쿼리의 실행 흐름을 제어하고, 특정 조건에 따라 다른 값을 반환하거나 작업을 수행할 수 있습니다.


주요 조건문 및 제어 흐름 함수:

  • IF: 단순한 조건문을 처리하며, 조건에 따라 다른 값을 반환합니다.
  • IFNULL: 값이 NULL일 때, 지정된 기본 값을 반환합니다.
  • NULLIF: 두 값이 같으면 NULL을 반환하고, 다르면 첫 번째 값을 반환합니다.
  • CASE: 다중 조건문을 처리하며, 여러 조건에 따라 다른 값을 반환합니다.
  • COALESCE: 여러 인자 중 첫 번째 NULL이 아닌 값을 반환합니다.



1. IF 함수

  • IF() 함수는 단순한 조건문을 처리하는 함수입니다.
  • IF는 주어진 조건이 참일 경우와 거짓일 경우 각각의 값을 반환합니다.


  • 문법:
    • condition: 평가할 조건
    • value_if_true: 조건이 참일 때 반환할 값
    • value_if_false: 조건이 거짓일 때 반환할 값
IF(condition, value_if_true, value_if_false)


  • 예시:
# 설명: 직원의 `salary` 5000보다 크면 `'High'`, 작거나 같으면 `'Low'` 반환합니다.
SELECT employee_name, 
       IF(salary > 5000, 'High', 'Low') AS salary_level
FROM Employees;


2. IFNULL() 함수

  • IFNULL() 함수는 NULL 값 처리에 사용됩니다.
  • NULL 값이 있을 경우 대신 반환할 값을 지정할 수 있습니다.
  • 문법:
    • expression: 평가할 값
    • value_if_null: expressionNULL일 때 반환할 값
IFNULL(expression, value_if_null)


  • 예시:
# 설명: `discount` 값이 **NULL**이면 **0** 반환하고, 그렇지 않으면 원래 값을 반환합니다.
SELECT product_name, 
       IFNULL(discount, 0) AS discount
FROM Products;


3. NULLIF 함수

  • NULLIF() 함수는 두 개의 값이 동일할 때 NULL을 반환합니다.
  • 서로 다른 값이면 첫 번째 값을 그대로 반환합니다.
  • 문법:
    • expression1: 비교할 첫 번째 값
    • expression2: 비교할 두 번째 값
NULLIF(expression1, expression2)


  • 예시:
# 설명: `delivery_time` `'00:00:00'` 같으면 **NULL** 반환하고, 그렇지 않으면 원래 값을 반환합니다.
SELECT order_id, 
       NULLIF(delivery_time, '00:00:00') AS delivery_time
FROM Orders;


4. CASE 표현식

  • CASE는 여러 조건을 검사하여 조건에 맞는 값을 반환하는 다중 조건문입니다.
  • 이는 IF 함수보다 복잡한 조건을 처리하는 데 유용합니다.
  • 문법:

CASE WHEN 방식:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE result_default
END


CASE 표현식 방식:

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ELSE result_default
END


  • 예시: CASE WHEN 방식
# 설명: `salary` 7000보다 크면 `'A'`, 5000보다 크면 `'B'`, 그렇지 않으면 `'C'` 반환합니다.
SELECT employee_name,
       CASE
           WHEN salary > 7000 THEN 'A'
           WHEN salary > 5000 THEN 'B'
           ELSE 'C'
       END AS salary_grade
FROM Employees;


  • 예시: CASE 표현식 방식
# 설명: `department_id` 1이면 `'HR'`, 2이면 `'Engineering'`,  외에는 `'Other'` 반환합니다.
SELECT employee_name,
       CASE department_id
           WHEN 1 THEN 'HR'
           WHEN 2 THEN 'Engineering'
           ELSE 'Other'
       END AS department_name
FROM Employees;


5. COALESCE() 함수

  • COALESCE() 함수는 여러 인자 중 NULL이 아닌 첫 번째 값을 반환하는 함수입니다.
  • 이 함수는 여러 열 중 값이 있는 첫 번째 값을 반환할 때 유용합니다.
  • 문법:
# `expression1, expression2, ..., expressionN`: NULL 여부를 확인할 여러 값을 나열합니다.
COALESCE(expression1, expression2, ..., expressionN)


  • 예시:
# 설명: `phone_number` NULL이면 `mobile_number` 반환하고, 그마저도 NULL이면 `'No contact'` 반환합니다.
SELECT employee_id,
       COALESCE(phone_number, mobile_number, 'No contact') AS contact_info
FROM Employees;


댓글남기기