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)를 사용해 별도의 테이블 없이도 숫자 시퀀스를 생성할 수 있으니, 상황에 맞는 방법을 선택해 활용해 보시기 바랍니다.