MySQL에서 지정한 범위의 값을 테이블에 한 번에 자동으로 삽입하고 싶다면 저장 프로시저(Stored Procedure)를 활용하는 것이 가장 효율적입니다. 반복문을 사용해 원하는 범위만큼 데이터를 순차적으로 입력할 수 있기 때문입니다.
이번 글에서는 10부터 20까지의 값을 테이블에 자동으로 삽입하는 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 값을 삽입할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Value int
-> );
Query OK, 0 rows affected (0.55 sec)
2. 저장 프로시저 생성하기
다음은 10부터 20까지의 값을 테이블에 자동으로 삽입하는 저장 프로시저를 생성하는 쿼리입니다.
mysql> DELIMITER //
mysql> CREATE PROCEDURE AutoInsertValuesToTable()
-> BEGIN
-> DECLARE startingRange INT DEFAULT 10;
-> WHILE startingRange <= 20 DO
-> INSERT DemoTable(Value) VALUES (startingRange);
-> SET startingRange = startingRange + 1;
-> END WHILE;
-> END
-> //
Query OK, 0 rows affected (0.23 sec)
mysql> DELIMITER ;
여기서 핵심 요소는 다음과 같습니다.
- DELIMITER // : 저장 프로시저 내부의 세미콜론(;)이 문장 종료로 해석되지 않도록 구분 기호를 임시로 변경합니다.
- DECLARE : 시작 값(10)을 담는 변수를 선언합니다.
- WHILE 루프 : 변수 값이 20 이하일 동안 반복적으로 INSERT를 수행하고, 매번 값을 1씩 증가시킵니다.
3. 저장 프로시저 호출하기
생성된 저장 프로시저는 CALL 명령으로 실행할 수 있습니다.
mysql> call AutoInsertValuesToTable();
Query OK, 1 row affected (1.10 sec)
4. 결과 확인하기
이제 값이 정상적으로 삽입되었는지 SELECT 문으로 확인해 보겠습니다.
mysql> select *from DemoTable;
실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
+-------+
| Value |
+-------+
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
+-------+
11 rows in set (0.00 sec)
출력 결과에서 확인할 수 있듯이, 10부터 20까지 총 11개의 값이 테이블에 성공적으로 삽입되었습니다.
마무리
이처럼 저장 프로시저와 WHILE 반복문을 조합하면 대량의 연속된 숫자 데이터를 손쉽게 생성할 수 있습니다. 범위의 시작값과 끝값만 변경하면 어떤 구간이든 동일한 방식으로 적용할 수 있으므로, 테스트 데이터를 만들거나 초기 데이터를 세팅할 때 매우 유용하게 활용됩니다.