반응형
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] IF 문 사용 방법 및 예시
SQL/MYSQL

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

2024. 12. 23. 09:53
728x90
반응형

MySQL의 IF Statement는 SQL 쿼리 내에서 조건에 따라 다른 값을 반환하거나 동작을 수행하고 싶을 때 유용하게 사용됩니다. 이는 조건을 확인하고, 그 결과에 따라 특정 값을 반환하거나 연산을 수행할 수 있게 해줍니다.

 IF Statement의 기본 문법
MySQL에서 IF Statement는 두 가지 주요 형태로 사용됩니다.

 1. SQL SELECT 내에서 사용하는 경우

IF(condition, value_if_true, value_if_false)

 

- condition: 조건을 정의합니다. 조건이 참(TRUE)이면 참으로 간주됩니다.
- value_if_true: 조건이 참일 때의 반환 값입니다.
- value_if_false: 조건이 거짓(FALSE)일 때의 반환 값입니다.

 2. 저장 프로시저 또는 MySQL 블록 내에서 사용하는 경우
IF ... THEN 구문을 사용하여 특정 조건이 만족되었을 때만 코드 블록을 실행할 수 있습니다.

IF condition THEN
    -- statements
END IF;

 


아래에서 각각의 경우에 대해 예제를 살펴보며 자세히 설명드리겠습니다.

 1. SQL SELECT 내에서 IF 사용 예시

예제: 상품의 가격을 기준으로 할인 여부 표시하기

Products 테이블이 있다고 가정합니다. 이 테이블은 상품의 이름(ProductName)과 가격(Price) 컬럼을 갖고 있습니다. 우리가 특정 가격 기준으로 "할인 적용" 여부를 판단하고 싶다면 아래와 같이 쿼리를 작성할 수 있습니다.

SELECT 
    ProductName,
    Price,
    IF(Price > 100, '할인 없음', '할인 적용') AS DiscountStatus
FROM Products;


설명:
- Price가 100보다 크면 DiscountStatus 컬럼에 "할인 없음"이라는 문자열이 반환됩니다.
- 반대로 100 이하인 경우 "할인 적용"이라는 문자열이 반환됩니다.

결과:

| ProductName | Price | DiscountStatus |
|-|-|-|
| 상품 A        | 120   | 할인 없음         |
| 상품 B        | 80    | 할인 적용         |


 2. 저장 프로시저에서 IF ... THEN 사용 예시

저장 프로시저나 트리거에서 조건문 IF를 활용하여 실행 흐름을 제어할 수도 있습니다.

예제: 주문 금액에 따라 포인트를 부여하는 로직

아래는 Orders 테이블의 TotalAmount(주문 금액)을 기준으로 고객에게 포인트를 적립하는 상황을 가정합니다. 주문 금액이 100 이상인 경우 10 포인트, 그렇지 않은 경우 5 포인트가 지급되는 로직입니다.

DELIMITER $$

CREATE PROCEDURE ApplyRewards(IN orderAmount DECIMAL(10,2), OUT rewardPoints INT)
BEGIN
    IF orderAmount >= 100 THEN
        SET rewardPoints = 10;
    ELSE
        SET rewardPoints = 5;
    END IF;
END$$

DELIMITER ;


설명:
- orderAmount 매개변수는 프로시저에 전달된 주문 금액입니다.
- 조건에서 orderAmount >= 100인 경우 rewardPoints에 10을 할당하며, 그렇지 않은 경우 5를 할당합니다.

이 프로시저를 호출하려면 다음과 같이 실행할 수 있습니다:

CALL ApplyRewards(150, @points);
SELECT @points; -- 이 결과는 10입니다.



 추가 주의사항
1. IF와 CASE 구문의 차이점:
   - MySQL의 CASE 구문은 더 복잡한 조건 처리를 위한 선택지이며, 여러 조건을 처리할 때 더욱 권장됩니다. IF는 간단한 조건 판단에 유용합니다.
   - 예제:

SELECT CASE
           WHEN Price > 100 THEN '할인 없음'
           ELSE '할인 적용'
       END AS DiscountStatus
FROM Products;


     

2. 저장 프로시저 내 IF의 경우, 중첩된 조건도 작성할 수 있습니다:

IF condition1 THEN
    -- 실행 코드
ELSEIF condition2 THEN
    -- 실행 코드
ELSE
    -- 실행 코드
END IF;



 최적화 팁
- IF Statement를 사용할 때 WHERE 절의 조건이 반복적으로 평가되는 경우, 조건에 사용된 컬럼(Price 등)에 인덱스를 추가하면 쿼리 성능 향상에 도움이 됩니다.
- SELECT 문에서 IF 대신 CASE를 사용하는 것을 고려하세요. CASE는 더 읽기 쉽고 확장성이 좋습니다.

위 내용을 활용하면 다양한 데이터 상황에서 조건에 따른 처리가 가능하며, 효율적인 비즈니스 로직 작성에 큰 도움이 될 것입니다. MySQL의 IF Statement는 단순하지만 강력한 도구이니 적절히 활용해 보세요!

728x90
반응형

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

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

    티스토리툴바