INSERT INTO 대상테이블 SELECT ... FROM 소스테이블 구문으로 같은 데이터베이스 내 테이블 간 데이터 복사가 가능합니다.
소스 테이블 생성 및 데이터
mysql> CREATE TABLE DemoTable1 (
-> Id INT,
-> FirstName VARCHAR(20),
-> Age INT
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1 VALUES(101,'Chris',24); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO DemoTable1 VALUES(102,'David',28); Query OK, 1 row affected (0.00 sec)
대상 테이블 생성
mysql> CREATE TABLE DemoTable2 (
-> EmployeeId INT,
-> EmployeeName VARCHAR(20),
-> EmployeeAge INT
-> );
Query OK, 0 rows affected (0.00 sec)
조건부 복사 (Id=102만)
mysql> INSERT INTO DemoTable2(EmployeeId,EmployeeName,EmployeeAge)
-> SELECT Id, FirstName, Age FROM DemoTable1 WHERE Id=102;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
대상 테이블 확인
mysql> SELECT * FROM DemoTable2;
+------------+--------------+-------------+ | EmployeeId | EmployeeName | EmployeeAge | +------------+--------------+-------------+ | 102 | David | 28 | +------------+--------------+-------------+ 1 row in set (0.00 sec)
핵심: 컬럼 순서와 타입이 맞아야 합니다. INSERT INTO DemoTable2 SELECT * FROM DemoTable1처럼 컬럼 생략 시 순서/개수 완벽 일치해야 합니다. 대용량 복사는 CREATE TABLE ... AS SELECT가 더 빠릅니다.