MySQL에서는 저장 프로시저(Stored Procedure)를 활용하면 반복적인 데이터 삽입 작업을 효율적으로 자동화할 수 있습니다. 이번 글에서는 phpMyAdmin 및 MySQL 환경에서 테이블에 데이터를 삽입하는 저장 프로시저를 만들고 호출하는 전체 과정을 단계별로 살펴보겠습니다.
1단계: 새 테이블 생성하기
먼저 예제에 사용할 새로운 테이블을 생성합니다. 아래 쿼리는 사용자 ID, 이름, 나이를 저장할 수 있는 테이블을 만드는 예시입니다.
mysql> create table StoredProcedureInsertDemo
-> (
-> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName varchar(20),
-> UserAge int
-> );
Query OK, 0 rows affected (0.63 sec)
UserId 컬럼은 AUTO_INCREMENT로 설정되어 있어 데이터가 삽입될 때마다 자동으로 증가하며, 기본 키(PRIMARY KEY) 역할도 함께 수행합니다.
2단계: 데이터 삽입용 저장 프로시저 생성하기
다음은 테이블에 데이터를 삽입하는 저장 프로시저를 생성하는 쿼리입니다. 이름과 나이를 입력값(IN 파라미터)으로 받아 처리합니다.
mysql> DELIMITER //
mysql> create procedure procedure_InsertIntoTable(IN FirstName VARCHAR(100),IN Age INT)
-> BEGIN
-> insert into StoredProcedureInsertDemo(UserName,UserAge) values (FirstName,Age);
-> END
-> //
Query OK, 0 rows affected (0.34 sec)
mysql> DELIMITER ;
여기서 DELIMITER // 명령은 프로시저 내부의 세미콜론(;)이 일반 쿼리 종료 문자로 해석되지 않도록 구분자를 임시로 변경하는 역할을 합니다. 프로시저 생성이 완료된 후에는 반드시 DELIMITER ;로 원래 상태로 되돌려 주어야 합니다.
3단계: CALL 명령으로 프로시저 호출하기
생성된 저장 프로시저는 CALL 명령을 사용하여 호출할 수 있습니다. 아래 예시에서는 'Larry'라는 이름과 나이 23을 인자로 전달합니다.
mysql> call procedure_InsertIntoTable('Larry',23);
Query OK, 1 row affected, 1 warning (0.19 sec)
실행 결과 1개의 행이 정상적으로 삽입된 것을 확인할 수 있습니다.
4단계: 결과 확인하기
마지막으로 SELECT 쿼리를 실행하여 테이블에 데이터가 올바르게 저장되었는지 확인해 보겠습니다.
mysql> select *from StoredProcedureInsertDemo;
실행 결과는 다음과 같습니다.
+--------+----------+---------+ | UserId | UserName | UserAge | +--------+----------+---------+ | 1 | Larry | 23 | +--------+----------+---------+ 1 row in set (0.00 sec)
출력 결과를 보면 UserId가 자동으로 1로 부여되고, UserName에는 'Larry', UserAge에는 23이 정상적으로 저장된 것을 확인할 수 있습니다.
정리
이처럼 저장 프로시저를 사용하면 INSERT 쿼리를 미리 정의해 두고 필요할 때마다 간단히 호출할 수 있어 코드의 재사용성이 높아지고, 애플리케이션과 데이터베이스 간의 통신 효율도 개선됩니다. 대량의 데이터를 반복적으로 삽입해야 하는 경우 저장 프로시저 활용을 적극 권장합니다.