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

MySQL에서 AUTO_INCREMENT 테이블에 INSERT INTO SELECT로 데이터 삽입하기

MySQL에서 AUTO_INCREMENT가 설정된 컬럼을 가진 테이블에 INSERT INTO ... SELECT 구문을 활용하면, 다른 쿼리의 결과값을 그대로 새 레코드로 삽입할 수 있습니다. 아래 예제를 통해 실제 동작 과정을 단계별로 살펴보겠습니다.

1. AUTO_INCREMENT 테이블 생성

먼저 UserId 컬럼에 자동 증가(AUTO_INCREMENT) 속성과 기본 키(PRIMARY KEY)를 지정한 테이블을 생성합니다.

mysql> create table DemoTable1923
    (
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

UserIdint NOT NULL AUTO_INCREMENT PRIMARY KEY로 정의되어 있어, 값을 직접 지정하지 않으면 자동으로 순차적인 번호가 부여됩니다.

2. INSERT INTO SELECT로 레코드 삽입

이제 INSERT INTO ... SELECT 구문을 사용해 레코드를 삽입합니다. 일반적인 VALUES 절 대신 SELECT 문의 결과를 값으로 전달하는 방식입니다.

mysql> insert into DemoTable1923(UserId,UserName)
      select 101 as UserId,'Chris' as UserName;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> insert into DemoTable1923(UserId,UserName)
     select 102 as UserId,'Robert' as UserName;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> insert into DemoTable1923(UserId,UserName)
     select 103 as UserId,'Sam' as UserName;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

SELECT 문 내에서 as UserId, as UserName처럼 별칭(alias)을 지정하면 코드의 가독성이 좋아지고, 어떤 값이 어느 컬럼에 들어가는지 명확하게 파악할 수 있습니다.

3. 저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 삽입 결과를 확인합니다.

mysql> select * from DemoTable1923;

위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

+--------+----------+
| UserId | UserName |
+--------+----------+
|     101 | Chris    |
|     102 | Robert   |
|     103 | Sam      |
+--------+----------+
3 rows in set (0.00 sec)

정리

이처럼 INSERT INTO ... SELECT 구문은 단순히 상수 값을 삽입할 때뿐만 아니라, 다른 테이블의 데이터를 조회하면서 동시에 새 테이블로 복사할 때도 유용하게 활용됩니다. 특히 WHERE 조건이나 JOIN과 함께 사용하면 원하는 데이터만 선별적으로 이동시킬 수 있어 대량의 데이터 마이그레이션 작업에서도 효율적입니다.