MySQL에서는 INSERT 문의 VALUES 절을 활용하면 여러 개의 행(레코드)을 한 번의 쿼리로 손쉽게 삽입할 수 있습니다. 각 행의 값들을 괄호 ()로 묶고, 행과 행 사이는 쉼표(,)로 구분해 주면 됩니다. 이 방식은 행마다 INSERT 문을 반복 실행하는 것보다 쿼리 호출 횟수가 줄어들어 성능 면에서도 유리합니다.
기본 문법
MySQL에서 여러 행을 삽입할 때 사용하는 기본 문법은 다음과 같습니다.
INSERT INTO yourTableName(yourColumnName1, yourColumnName2, ..., yourColumnNameN)
VALUES
(value1, value2, ..., valueN),
(value1, value2, ..., valueN),
...
(value1, value2, ..., valueN);
즉, 하나의 INSERT 문 안에 삽입하고자 하는 행의 수만큼 값 묶음을 나열하는 구조입니다.
예제로 살펴보기
1. 테이블 생성
먼저 예제에 사용할 테이블을 MySQL에서 생성해 보겠습니다.
mysql> CREATE TABLE InsertMultipleRowsDemo
-> (
-> Id int,
-> Name varchar(200),
-> Age int
-> );
Query OK, 0 rows affected (0.45 sec)
2. 여러 행 동시 삽입
위에서 설명한 문법을 적용하여 5개의 행을 한 번에 삽입해 보겠습니다. 쿼리는 다음과 같습니다.
mysql> INSERT INTO InsertMultipleRowsDemo(Id, Name, Age)
VALUES (1,'John',23),(2,'Carol',24),(3,'Johnson',21),(4,'Smith',20),(5,'David',26);
Query OK, 5 rows affected (0.31 sec)
Records: 5 Duplicates: 0 Warnings: 0
실행 결과 메시지를 보면 5 rows affected, 즉 5개의 행이 정상적으로 삽입되었음을 확인할 수 있습니다.
3. 삽입된 데이터 확인
SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> SELECT * FROM InsertMultipleRowsDemo;
다음은 위 쿼리의 출력 결과입니다.
+------+---------+------+
| Id | Name | Age |
+------+---------+------+
| 1 | John | 23 |
| 2 | Carol | 24 |
| 3 | Johnson | 21 |
| 4 | Smith | 20 |
| 5 | David | 26 |
+------+---------+------+
5 rows in set (0.00 sec)
정리
이처럼 VALUES 절 뒤에 여러 개의 값 묶음을 쉼표로 구분하여 나열하면, 단 한 번의 INSERT 쿼리로 다수의 행을 효율적으로 삽입할 수 있습니다. 대량의 데이터를 입력할 때 네트워크 왕복 횟수와 쿼리 파싱 오버헤드를 크게 줄여 주므로, 실무에서도 널리 사용되는 방식입니다.