반응형
Ant_U
DBA 개미
Ant_U
전체 방문자
오늘
어제
  • 분류 전체보기 (262)
    • AWS (3)
    • C# (1)
    • SQL (236)
      • MYSQL (186)
      • MSSQL (50)
    • 자격증 (20)
      • SQLD (12)
      • SQLP (8)

인기 글

최근 글

250x250
hELLO · Designed By 정상우.
Ant_U

DBA 개미

[MySQL] CASE 문 사용 방법 및 예시
SQL/MYSQL

[MySQL] CASE 문 사용 방법 및 예시

2024. 12. 20. 09:26
728x90
반응형


 소개
MySQL의 CASE 문은 SQL 쿼리에서 조건에 따라 다른 결과를 반환하도록 해주는 강력한 제어 흐름 도구입니다. IF 문과 유사하지만 SQL 쿼리 내에서 더 간단하고 유연하게 조건을 정의할 수 있다는 점에서 유용합니다. 이 블로그에서는 CASE 문의 기본 구조와 활용법을 예제와 함께 알아보겠습니다.

 주요 특징
- 조건 기반 제어 흐름: 특정 조건에 따라 다른 값을 반환할 수 있음.
- 다양한 사용 장소: SELECT, UPDATE, ORDER BY 등 여러 쿼리 구문에 적용 가능.
- 간결성 제공: 복잡한 조건문을 간단하게 작성 가능.

 MySQL CASE 구조

MySQL의 CASE 문은 두 가지 형태로 사용됩니다.

 1. 간단한 CASE 문
여기에서는 특정 값이 주어진 조건과 일치하는지를 검사합니다.

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE default_result
END



 2. 검색 CASE 문
여기에서는 조건(expression)이 아닌, 자유롭게 여러 조건을 정의할 수 있습니다.

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END



두 구조 모두 END를 추가해야 정상적으로 종료됩니다.

 사용 예시
 1. SELECT 구문에서의 활용
CASE 문은 자주 SELECT 구문에서 사용됩니다. 예를 들어, 학생들의 점수에 따라 등급을 부여한다고 가정해 봅시다:

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

 

결과:

| student_name   | score | grade |
|-|-|-|
| Alice          | 92    | A     |
| Bob            | 76    | C     |
| Charlie        | 59    | F     |


위 예제에서 학생 점수를 조건으로 삼아 grade가 동적으로 생성됩니다.

 2. UPDATE 구문에서의 활용
특정 조건에 따라 데이터를 한 번에 업데이트해야 할 때도 유용합니다.

UPDATE employees
SET salary = CASE 
        WHEN experience_years >= 10 THEN salary  1.2
        WHEN experience_years >= 5 THEN salary  1.1
        ELSE salary  1.05
    END;


위 쿼리는 경험 연수에 따라 직원의 급여를 조정합니다.

 3. ORDER BY 구문에서의 활용
복잡한 정렬 조건을 CASE 문으로 설정할 수도 있습니다.

SELECT product_name, category, price 
FROM products
ORDER BY 
    CASE 
        WHEN category = 'Electronics' THEN 1
        WHEN category = 'Clothing' THEN 2
        ELSE 3
    END, price ASC;


위 쿼리는 우선 Electronics, 다음으로 Clothing, 그 외의 상품 순서로 정렬하고, 같은 카테고리 내에서는 가격 순으로 정렬합니다.

 장단점 분석

 장점:
- 가독성 향상: 복잡한 조건도 간결하게 작성할 수 있어 코드의 가독성을 높입니다.
- 범용성: SELECT, UPDATE, ORDER BY 등 다양한 구문에서 활용 가능.
- 동적 데이터 처리: 조건에 따라 동적으로 값을 반환하거나 업데이트할 수 있음.

 단점:
- 복잡성 증가 위험: 너무 많은 조건을 처리하다 보면 오히려 복잡해질 수 있습니다.
- 성능 고려 필요: 복잡한 CASE 문은 데이터가 많을수록 성능 저하를 유발할 수 있으니 주의가 필요합니다.

 결론
MySQL의 CASE 문은 SQL에서 조건 기반 제어 흐름을 구현할 때 매우 유용한 도구입니다. SELECT, UPDATE, ORDER BY 등 여러 구문에서 활용 가능하며, 복잡한 조건도 간단히 처리할 수 있습니다. 하지만 지나치게 많은 조건을 포함하거나 데이터가 대규모인 경우에는 성능에 유의해야 합니다. 올바르게 활용하면 보다 효율적이고 가독성 높은 SQL 코드를 작성할 수 있을 것입니다! 

 참고 자료
- [MySQL 공식 문서: CASE 문](https://dev.mysql.com/doc/refman/8.0/en/case.html)
- [SQL 기초 학습 자료](https://www.w3schools.com/sql/) 

728x90
반응형

'SQL > MYSQL' 카테고리의 다른 글

[MySQL] LOOP 문 사용 방법 및 예시  (1) 2024.12.26
[MySQL] LEAVE 문 사용 방법 및 예시  (0) 2024.12.26
[MySQL] ITERATE 사용 방법 및 예시  (0) 2024.12.24
[MySQL] IF 문 사용 방법 및 예시  (0) 2024.12.23
[MySQL] Local Variable 사용 방법 및 예시  (0) 2024.12.19
[MySQL] Local Variable DECLARE 사용 방법 및 예시  (0) 2024.12.17
[MySQL] DECLARE 사용 방법 및 예시  (0) 2024.12.16
[MySQL] Statement Labels 사용 방법 및 예시  (0) 2024.12.12
    'SQL/MYSQL' 카테고리의 다른 글
    • [MySQL] ITERATE 사용 방법 및 예시
    • [MySQL] IF 문 사용 방법 및 예시
    • [MySQL] Local Variable 사용 방법 및 예시
    • [MySQL] Local Variable DECLARE 사용 방법 및 예시
    Ant_U
    Ant_U

    티스토리툴바