MySQL에서 UNION을 사용하여 두 개의 테이블을 하나로 병합하려면 CREATE TABLE ... SELECT 문을 활용할 수 있습니다. 이 방법은 기존 테이블들의 데이터를 결합하여 새로운 테이블을 손쉽게 생성해 줍니다.
기본 문법
create table yourNewTableName select * from yourFirstTableName UNION select * from yourSecondTableName;
아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 첫 번째 테이블 생성
먼저 첫 번째 테이블을 생성합니다. 다음은 해당 쿼리입니다 −
mysql> create table FirstTable
-> (
-> Id int,
-> PersonName varchar(20)
-> );
Query OK, 0 rows affected (2.10 sec)2단계: 첫 번째 테이블에 데이터 삽입
INSERT 명령을 사용하여 테이블에 레코드를 삽입합니다 −
mysql> insert into FirstTable values(10,'Larry'); Query OK, 1 row affected (0.12 sec) mysql> insert into FirstTable values(20,'David'); Query OK, 1 row affected (0.22 sec)
SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다 −
mysql> select * from FirstTable;
실행 결과는 다음과 같습니다 −
+------+------------+ | Id | PersonName | +------+------------+ | 10 | Larry | | 20 | David | +------+------------+ 2 rows in set (0.00 sec)
3단계: 두 번째 테이블 생성
이제 같은 구조를 가진 두 번째 테이블을 생성합니다 −
mysql> create table SecondTable
-> (
-> Id int,
-> PersonName varchar(20)
-> );
Query OK, 0 rows affected (0.91 sec)4단계: 두 번째 테이블에 데이터 삽입
두 번째 테이블에도 레코드를 삽입합니다 −
mysql> insert into SecondTable values(30,'Chris'); Query OK, 1 row affected (0.17 sec) mysql> insert into SecondTable values(40,'Robert'); Query OK, 1 row affected (0.15 sec)
SELECT 문으로 레코드를 확인합니다 −
mysql> select * from SecondTable;
실행 결과는 다음과 같습니다 −
+------+------------+ | Id | PersonName | +------+------------+ | 30 | Chris | | 40 | Robert | +------+------------+ 2 rows in set (0.00 sec)
5단계: UNION으로 두 테이블 병합
이제 UNION을 사용하여 FirstTable과 SecondTable을 병합한 새로운 테이블을 생성합니다 −
mysql> create table MergeBothTableDemo
-> select * from FirstTable
-> UNION
-> select * from SecondTable;
Query OK, 4 rows affected (0.86 sec)
Records: 4 Duplicates: 0 Warnings: 06단계: 병합 결과 확인
새로 생성된 테이블의 레코드를 조회해 보겠습니다 −
mysql> select * from MergeBothTableDemo;
두 테이블의 데이터가 하나로 합쳐진 것을 확인할 수 있습니다 −
+------+------------+ | Id | PersonName | +------+------------+ | 10 | Larry | | 20 | David | | 30 | Chris | | 40 | Robert | +------+------------+ 4 rows in set (0.00 sec)
참고: UNION과 UNION ALL의 차이
UNION은 중복된 행을 자동으로 제거하지만, 중복 제거 과정에서 성능 비용이 발생할 수 있습니다. 만약 중복 데이터도 모두 포함하고 싶다면 UNION ALL을 사용하는 것이 더 빠릅니다. 반면, 완전히 동일한 행을 걸러내야 하는 경우에는 UNION이 적합합니다.