MySQL에서는 INSERT 명령문 하나만으로도 여러 개의 레코드를 손쉽게 추가할 수 있습니다. VALUES 절에 값 그룹을 쉼표(,)로 구분하여 나열하면 되는데, 이는 반복적인 INSERT 문을 여러 번 실행하는 것보다 훨씬 효율적입니다.
기본 문법
insert into yourTableName(yourColumnName1,yourColumnName2,......N) values(yourValue1,yourValue2,....N),(yourValue1,yourValue2,....N),..........N;
VALUES 뒤에 괄호로 묶인 값 목록을 쉼표로 계속 이어 붙이면, 각 괄호가 하나의 행(레코드)으로 테이블에 삽입됩니다.
예제 1: 테이블 생성하기
먼저 실습용 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value1 int,
Value2 int,
Value3 int
);
Query OK, 0 rows affected (0.79 sec)AUTO_INCREMENT로 설정된 Id 컬럼은 기본 키 역할을 하며, 레코드가 삽입될 때마다 자동으로 순차적인 번호가 부여됩니다.
예제 2: 여러 레코드 동시에 삽입하기
이제 단일 INSERT 명령으로 네 개의 레코드를 한 번에 삽입해 보겠습니다.
mysql> insert into DemoTable(Value1,Value2,Value3) values(10,20,40),(100,148,120),(150,670,1000), (100000,200000,409999); Query OK, 4 rows affected (0.17 sec) Records : 4 Duplicates : 0 Warnings : 0
실행 결과를 보면 4 rows affected, 즉 네 개의 행이 성공적으로 삽입되었음을 확인할 수 있습니다. 중복된 레코드나 경고 없이 깔끔하게 처리되었습니다.
예제 3: 삽입된 데이터 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----+--------+--------+--------+ | Id | Value1 | Value2 | Value3 | +----+--------+--------+--------+ | 1 | 10 | 20 | 40 | | 2 | 100 | 148 | 120 | | 3 | 150 | 670 | 1000 | | 4 | 100000 | 200000 | 409999 | +----+--------+--------+--------+ 4 rows in set (0.00 sec)
정리
단일 INSERT 문으로 여러 레코드를 삽입하면 다음과 같은 장점이 있습니다.
- 성능 향상: 쿼리를 한 번만 전송하므로 네트워크 왕복 횟수와 파싱 오버헤드가 줄어듭니다.
- 원자성 관리 용이: 하나의 문장으로 처리되므로 트랜잭션 제어가 더 간단합니다.
- 코드 간결화: 반복되는 INSERT 문을 줄여 코드 가독성이 좋아집니다.
대량의 데이터를 삽입할 때는 이처럼 멀티 로우(multi-row) INSERT 구문을 활용하는 것이 가장 간편하고 효율적인 방법입니다.