소개
MySQL에서 WHILE 문은 반복적으로 특정 작업을 수행해야 할 때 유용한 제어 구조입니다. 프로세스를 더 효율적으로 관리하고 조건에 따라 반복을 제어할 수 있도록 도와줍니다. WHILE 문은 명확하게 조건과 반복 작업을 분리할 수 있어 코드를 읽고 유지보수하기 쉽습니다. 여기서는 WHILE 문이 무엇인지, 어떻게 활용하는지, 간단한 예시를 통해 설명해보겠습니다.
주요 특징
- 조건 기반 반복 실행:
WHILE 문은 지정된 조건이 `TRUE`일 때만 반복 실행됩니다. 조건이 `FALSE`가 되면 즉시 반복을 종료합니다.
- 유연한 종료 조건:
반복을 시작하기 전에 조건을 평가하기 때문에 반복을 미리 종료할 수 있습니다.
- BEGIN ... END 블록 사용:
WHILE 문 안에 여러 SQL 명령문을 포함하려면 BEGIN ... END 블록을 묶어야 합니다.
사용 예시
다음은 WHILE 문을 사용하는 간단한 예제입니다. 아래 코드는 특정 숫자로부터 1씩 증가시키며 합계를 계산하는 로직을 보여줍니다.
예시 코드:
DELIMITER //
CREATE PROCEDURE CalculateSum()
BEGIN
DECLARE counter INT DEFAULT 1;
DECLARE total INT DEFAULT 0;
WHILE counter <= 10 DO
SET total = total + counter;
SET counter = counter + 1;
END WHILE;
SELECT total AS SumResult;
END//
DELIMITER ;
실행 순서 설명:
1. 변수 선언:
- `counter`: 반복 횟수를 제어하는 변수.
- `total`: 누적 결과를 저장하는 변수.
2. WHILE 조건:
- `counter <= 10`: `counter`가 10 이하일 때 반복을 실행합니다.
3. 반복 동작:
- `total`에 현재 `counter` 값을 더합니다.
- `counter`를 1씩 증가시킵니다.
4. 종료:
- `counter`가 10을 초과하면 WHILE 문을 빠져나가고, 결과를 반환합니다.
실행 결과:
CALL CalculateSum();
출력:
+--+
| SumResult |
+--+
| 55 |
+--+
이 코드는 1부터 10까지의 합계를 계산하여 결과로 `55`를 반환합니다.
장단점 분석
장점:
- 가독성과 유지보수성:
WHILE 조건으로 반복 종료의 기준을 명확히 이해할 수 있습니다.
- 유연한 구조:
다양한 조건 로직을 추가해 더욱 복잡한 작업에도 적용 가능합니다.
- 비교적 간단한 구문:
다른 반복문(`LOOP`, `REPEAT`)에 비해 간결한 경우가 많습니다.
단점:
- 무한 루프 위험:
조건을 잘못 설정하거나 종료 조건을 포함하지 않으면 무한 루프가 발생할 수 있습니다.
- 단조로운 작업에 부적합:
단순히 특정 범위를 순회하는 작업이라면 FOR 루프가 더 적합할 수 있습니다.
결론
MySQL WHILE 문은 반복 작업이 필요한 프로세스에 강력한 기능을 제공합니다. 특히 반복 종료 조건을 명확하게 정의해야 하는 경우 유용하지만, 조건 설정 시 무한 루프를 방지하기 위해 주의해야 합니다. 단일 작업보다는 조건 기반의 반복 로직이 필요한 상황에서 사용해보세요.
참고 자료
- [MySQL 공식 문서 - WHILE Statement](https://dev.mysql.com/doc/refman/8.0/en/while.html)
'SQL > MYSQL' 카테고리의 다른 글
[MySQL] Cursor Open 문 사용 방법 및 예시 (1) | 2025.01.03 |
---|---|
[MySQL] Cursor FETCH 문 사용 방법 및 예시 (0) | 2024.12.31 |
[MySQL] Cursor DECLARE 문 사용 방법 및 예시시 (0) | 2024.12.30 |
[MySQL] Cursor CLOSE 문 사용 방법 및 예시 (2) | 2024.12.29 |
[MySQL] RETURN 문 사용 방법 및 예시 (0) | 2024.12.27 |
[MySQL] REPEAT 문 사용 방법 및 예시 (0) | 2024.12.27 |
[MySQL] LOOP 문 사용 방법 및 예시 (0) | 2024.12.26 |
[MySQL] LEAVE 문 사용 방법 및 예시 (0) | 2024.12.26 |