MySQL UNION 연산자는 둘 이상의 SELECT 문의 결과를 하나의 결과 집합으로 결합하는 데 사용됩니다. 각 SELECT 문의 열의 수와 데이터 유형은 모두 일치해야 합니다.
일반적으로 UNION 연산자는 중복 행을 제거하기 위해 사용됩니다. 그러나 UNION ALL을 사용하면 중복 행을 제거하지 않고 결과에 모두 포함됩니다.
1. UNION 연산자
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
위의 예제는 table1과 table2의 column1과 column2 열의 데이터를 결합합니다. UNION 연산자는 두 개의 SELECT 문의 결과를 중복을 제거하고 하나의 결과 집합으로 만듭니다.
2. UNION ALL 연산자
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;
위의 예제는 table1과 table2의 column1과 column2 열의 데이터를 결합합니다. UNION ALL 연산자는 중복을 제거하지 않고 두 개의 SELECT 문의 결과를 하나의 결과 집합으로 만듭니다.
UNION 연산자는 데이터베이스의 성능에 영향을 미칠 수 있습니다. UNION을 사용할 때 결과 집합이 매우 크면 시스템 성능에 영향을 미칠 수 있습니다. 그러므로 대규모 데이터베이스에서는 UNION을 사용하기 전에 잘 고려해야 합니다.
3. 예시
예를 들어, 고객 정보를 담고 있는 두 개의 테이블이 있다고 가정해봅시다.
customers_1 테이블
id | name | |
1 | Alice | alice@example.com |
2 | Bob | bob@example.com |
3 | Charlie | charlie@example.com |
customers_2 테이블
id | name | |
4 | David | david@example.com |
5 | Eve | eve@example.com |
1 | Alice | alice@example.com |
이제 두 개의 테이블을 UNION을 사용하여 결합하고 결과를 확인해 보겠습니다.
SELECT id, name, email FROM customers_1
UNION
SELECT id, name, email FROM customers_2;
위의 SQL 쿼리는 두 개의 테이블에서 id, name, email 열을 선택하고 UNION 연산자를 사용하여 중복을 제거한 후에 결과를 하나의 집합으로 반환합니다.
결과는 다음과 같습니다.
id | name | |
1 | Alice | alice@example.com |
2 | Bob | bob@example.com |
3 | Charlie | charlie@example.com |
4 | David | david@example.com |
5 | Eve | eve@example.com |
결과에서 볼 수 있듯이, UNION 연산자를 사용하여 중복된 행이 제거되었고, 1번 고객의 정보가 두 개의 테이블에서 모두 사용되었으나 중복이 제거되었습니다.
'DB' 카테고리의 다른 글
[MySQL] 서브쿼리 사용법 (0) | 2023.03.16 |
---|---|
[MySQL] 뷰 (view) 생성, 수정, 삭제, 조회 하는 방법 (0) | 2023.03.13 |
[MySQL] 날짜 형식 변환 방법 (0) | 2023.03.11 |
[MySQL] 몫과 나머지 구하기 (0) | 2023.03.11 |
[MySQL] 그룹별 최대값, 최소값 구하는 방법 (0) | 2023.03.10 |
댓글