Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 단일 쿼리로 여러 행 한 번에 삽입하는 방법

MySQL에서는 INSERT 문의 VALUES 절에 각 행의 값을 괄호로 묶어 쉼표(,)로 구분해 나열함으로써, 단 하나의 쿼리만으로 여러 행(row)을 동시에 삽입할 수 있습니다.

기본 문법

여러 행을 삽입하는 기본 문법은 다음과 같습니다.

insert into yourTableName values(value1,value2,...N),(value1,value2,...N),(value1,value2,...N),(value1,value2,...N),(value1,value2,...N),(value1,value2,...N)................N;

각 괄호 () 안에는 해당 행에 들어갈 컬럼 값들이 순서대로 위치하며, 괄호 묶음 사이를 쉼표로 구분하면 됩니다.

예제용 테이블 생성

실제 동작 과정을 확인하기 위해 먼저 테이블을 생성해 보겠습니다.

mysql> create table MultipleRowsInsert
   −> (
   −> UserId int,
   −> UserName varchar(200)
   −> );
Query OK, 0 rows affected (1.21 sec)

UserId와 UserName 두 개의 컬럼을 가진 테이블이 정상적으로 생성되었습니다.

여러 행 삽입 쿼리 실행

이제 위 테이블에 5명의 사용자 데이터를 한 번의 쿼리로 삽입해 보겠습니다.

mysql> insert into MultipleRowsInsert values(100,'Bob'),(101,'Smith'),(102,'Carol'),(104,'David'),(105,'Sam');
Query OK, 5 rows affected (0.33 sec)
Records: 5 Duplicates: 0 Warnings: 0

실행 결과 메시지를 보면 총 5개의 행이 성공적으로 삽입되었으며, 중복(Duplicates)이나 경고(Warnings) 없이 깔끔하게 처리된 것을 확인할 수 있습니다.

삽입 결과 확인하기

SELECT 문을 사용해 테이블에 저장된 전체 레코드를 조회해 보겠습니다.

mysql> select *from MultipleRowsInsert;

실행 결과는 다음과 같습니다.

+--------+----------+
| UserId | UserName |
+--------+----------+
|    100 | Bob      |
|    101 | Smith    |
|   102 | Carol    |
|   104 | David    |
|   105 | Sam      |
+--------+----------+
5 rows in set (0.00 sec)

5개의 행이 모두 정상적으로 저장된 것을 확인할 수 있습니다.

참고 사항

행마다 별도의 INSERT 문을 실행하는 방식과 비교했을 때, 단일 쿼리로 여러 행을 삽입하면 데이터베이스와의 네트워크 왕복 횟수가 크게 줄어들어 대량 데이터 입력 시 성능이 눈에 띄게 향상됩니다. 다만 한 번에 삽입하는 데이터 양이 매우 클 경우에는 MySQL의 max_allowed_packet 설정값을 함께 확인하는 것이 좋습니다.