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

MySQL 단일 쿼리로 여러 레코드 한 번에 삽입하는 방법 (VALUES 쉼표 구분)

MySQL에서는 INSERT 문 하나만으로도 여러 개의 레코드를 동시에 테이블에 삽입할 수 있습니다. VALUES 절 뒤에 각 행의 값을 쉼표(,)로 구분하여 나열하면 되는데, 이 방식은 개별 INSERT 문을 반복 실행하는 것보다 성능 면에서 훨씬 유리합니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table if not exists DemoTable1343
    -> (
    -> `_ClientId` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ClientName varchar(40),
    -> ClientProjectDeadline date
    -> )ENGINE=MyISAM,AUTO_INCREMENT=1000;
Query OK, 0 rows affected (0.21 sec)

위 테이블은 다음과 같은 특징을 가집니다.

  • _ClientId: 자동 증가(AUTO_INCREMENT) 기본 키로, 1000부터 시작합니다.
  • ClientName: 고객 이름을 저장하는 varchar(40) 컬럼입니다.
  • ClientProjectDeadline: 프로젝트 마감일을 저장하는 date 타입 컬럼입니다.

2. 단일 쿼리로 여러 레코드 삽입

이제 INSERT 명령어 하나로 네 개의 레코드를 한 번에 삽입해 보겠습니다. 각 행의 값은 괄호로 묶고, 행과 행 사이는 쉼표로 구분합니다.

mysql> insert into DemoTable1343(ClientName,ClientProjectDeadline) values('Chris','2019-09-24'),('Bob','2015-12-09'),
    -> ('Mike','2017-01-20'),('Carol','2018-03-31');
Query OK, 4 rows affected (0.10 sec)
Records: 4 Duplicates: 0 Warnings: 0

실행 결과 메시지를 보면 4개의 행이 정상적으로 삽입되었음을 확인할 수 있습니다. 중복(Duplicates)과 경고(Warnings) 없이 처리되었습니다.

3. 삽입된 데이터 확인

SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1343;

다음과 같은 결과가 출력됩니다.

+-----------+------------+-----------------------+
| _ClientId | ClientName | ClientProjectDeadline |
+-----------+------------+-----------------------+
|      1000 |      Chris |            2019-09-24 |
|      1001 |        Bob |            2015-12-09 |
|      1002 |       Mike |            2017-01-20 |
|      1003 |      Carol |            2018-03-31 |
+-----------+------------+-----------------------+
4 rows in set (0.00 sec)

정리

이처럼 VALUES 절에 쉼표로 구분된 여러 행을 나열하면 단일 쿼리로 대량의 데이터를 빠르게 삽입할 수 있습니다. 또한 AUTO_INCREMENT 설정 덕분에 클라이언트 ID가 별도 지정 없이도 1000부터 순차적으로 자동 할당된 것을 확인할 수 있습니다. 대량 데이터 입력 시 네트워크 왕복 횟수를 줄여주므로 실무에서도 널리 활용되는 패턴입니다.