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

MySQL에서 UNION으로 두 테이블 병합하는 방법

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: 0

6단계: 병합 결과 확인

새로 생성된 테이블의 레코드를 조회해 보겠습니다 −

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이 적합합니다.