Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 숫자 범위 생성하는 방법 – 저장 프로시저 활용 가이드

MySQL에서 연속된 숫자 범위를 생성하려면 저장 프로시저(Stored Procedure)를 활용하는 것이 효과적입니다. 이 글에서는 예제 테이블을 만들고, 저장 프로시저를 통해 10부터 1까지의 숫자 범위를 자동으로 생성하는 방법을 단계별로 살펴보겠습니다.

1단계: 테이블 생성하기

먼저 숫자를 저장할 테이블을 생성해야 합니다. 아래 쿼리로 간단한 테이블을 만들 수 있습니다.

mysql> create table GeneratingNumbersDemo
    -> (
    -> Number int
    -> );
Query OK, 0 rows affected (0.55 sec)

위 쿼리는 정수형(int) 데이터를 담는 'Number' 컬럼 하나만 있는 테이블을 생성합니다.

2단계: 저장 프로시저 작성하기

다음으로, 숫자 범위를 테이블에 삽입하는 저장 프로시저를 생성합니다. WHILE 루프를 사용해 10부터 1까지 역순으로 숫자를 입력하도록 구성했습니다.

mysql> delimiter //
mysql> CREATE PROCEDURE Stored_ProceduretoGenerateNumbersDemo()
    -> BEGIN
    -> DECLARE start INT DEFAULT 10;
    -> WHILE start > 0 DO
    -> INSERT GeneratingNumbersDemo VALUES (start);
    -> SET start = start - 1;
    -> END WHILE;
    -> END //
Query OK, 0 rows affected (0.12 sec)

코드 설명은 다음과 같습니다.

  • DECLARE start INT DEFAULT 10 : 시작 값을 10으로 초기화합니다.
  • WHILE start > 0 DO : 값이 0보다 큰 동안 반복 실행합니다.
  • INSERT ... VALUES (start) : 현재 값을 테이블에 삽입합니다.
  • SET start = start - 1 : 값을 1씩 감소시켜 루프를 진행합니다.

3단계: 저장 프로시저 호출하기

저장 프로시저를 실행하려면 CALL 명령어를 사용합니다. 기본 문법은 다음과 같습니다.

call yourStoredProcedureName();

이제 위에서 생성한 프로시저를 실제로 호출해 보겠습니다.

mysql> call Stored_ProceduretoGenerateNumbersDemo();
Query OK, 1 row affected (0.85 sec)

4단계: 결과 확인하기

프로시저가 정상적으로 실행되었다면, SELECT 문으로 테이블에 숫자가 제대로 저장되었는지 확인할 수 있습니다.

mysql> select *from GeneratingNumbersDemo;

실행 결과는 다음과 같습니다.

+--------+
| Number |
+--------+
|     10 |
|      9 |
|      8 |
|      7 |
|      6 |
|      5 |
|      4 |
|      3 |
|      2 |
|      1 |
+--------+
10 rows in set (0.00 sec)

테이블에 10부터 1까지 총 10개의 숫자가 성공적으로 저장된 것을 확인할 수 있습니다.

마무리 및 참고 사항

이처럼 저장 프로시저와 WHILE 루프를 조합하면 원하는 범위의 숫자를 손쉽게 생성할 수 있습니다. 시작 값이나 종료 조건을 변수로 변경하면, 1부터 1000까지 등 더 넓은 범위도 유연하게 처리할 수 있습니다. 또한 MySQL 8.0 이상 버전에서는 재귀 CTE(Common Table Expression)를 사용해 별도의 테이블 없이도 숫자 시퀀스를 생성할 수 있으니, 상황에 맞는 방법을 선택해 활용해 보시기 바랍니다.