여러 개의 테이블에 저장된 레코드를 하나의 테이블로 가져오려면 INSERT INTO SELECT 문을 사용하면 됩니다. 이 글에서는 두 개의 테이블에 있는 데이터를 세 번째 테이블로 삽입하는 과정을 단계별로 살펴보겠습니다.
1단계: 첫 번째 테이블 생성 및 데이터 입력
먼저 이름(Name)을 저장할 첫 번째 테이블을 생성합니다.
mysql> create table DemoTable1943
(
Name varchar(20)
);
Query OK, 0 rows affected (0.00 sec)insert 명령으로 레코드를 입력합니다.
mysql> insert into DemoTable1943 values('Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1943 values('Robert');
Query OK, 1 row affected (0.00 sec)select 문으로 전체 레코드를 확인해 보겠습니다.
mysql> select * from DemoTable1943;
실행 결과는 다음과 같습니다.
+--------+ | Name | +--------+ | Chris | | Robert | +--------+ 2 rows in set (0.00 sec)
2단계: 두 번째 테이블 생성 및 데이터 입력
다음으로 나이(Age)를 저장할 두 번째 테이블을 생성합니다.
mysql> create table DemoTable1944
(
Age int
);
Query OK, 0 rows affected (0.00 sec)마찬가지로 insert 명령으로 레코드를 입력합니다.
mysql> insert into DemoTable1944 values(23); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1944 values(26); Query OK, 1 row affected (0.00 sec)
select 문으로 전체 레코드를 확인합니다.
mysql> select * from DemoTable1944;
실행 결과는 다음과 같습니다.
+------+ | Age | +------+ | 23 | | 26 | +------+ 2 rows in set (0.00 sec)
3단계: 데이터를 삽입할 대상 테이블 생성
이제 이름과 나이를 함께 저장할 세 번째 테이블을 생성합니다.
mysql> create table DemoTable1945
(
StudentName varchar(20),
StudentAge int
);
Query OK, 0 rows affected (0.00 sec)4단계: 여러 테이블에서 데이터 삽입하기
핵심은 INSERT INTO SELECT 문입니다. FROM 절에서 두 테이블에 별칭(alias)을 지정하고, 각 테이블의 컬럼 값을 조합하여 대상 테이블에 삽입합니다.
mysql> insert into DemoTable1945(StudentName,StudentAge) select tbl1.Name,tbl2.Age from DemoTable1943 tbl1,DemoTable1944 tbl2; Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0
select 문으로 최종 결과를 확인해 보겠습니다.
mysql> select * from DemoTable1945;
실행 결과는 다음과 같습니다.
+-------------+------------+ | StudentName | StudentAge | +-------------+------------+ | Chris | 23 | | Robert | 23 | | Chris | 26 | | Robert | 26 | +-------------+------------+ 4 rows in set (0.00 sec)
동작 원리 정리
위 쿼리는 두 테이블을 카티션 곱(Cartesian Product) 방식으로 결합합니다. 첫 번째 테이블의 2개 레코드와 두 번째 테이블의 2개 레코드가 모든 조합으로 매칭되어 총 4개(2 × 2)의 레코드가 삽입된 것을 확인할 수 있습니다.
만약 특정 조건에 맞는 데이터만 삽입하고 싶다면 WHERE 절을 추가하여 조인 조건이나 필터를 지정할 수 있습니다. 이처럼 INSERT INTO SELECT 문을 활용하면 여러 테이블의 데이터를 손쉽게 하나의 테이블로 통합할 수 있습니다.