UNION 이란
- 결과 집합에 중복을 제거하여 두 개 이상의 SELECT문의 결과를 합쳐 하나의 결과집합으로 만
- 중복된 값을 제거하는 연산이 추가로 수행되기 때문에 UNION ALL보다 속도가 느리다.
- 즉, 중복을 제거한 합집합 연산을 수행함
- UNION 연산자를 사용하여 중복된 행을 제거할 때는 선택한 열의 값이 전체로 같아야한다.
- 하나라도 다른 값이 있는 경우 중복된 값으로 간주되어 결과에 포함된다.
예로 들어, 다음과 같은 두 개의 쿼리가 있다고 가정했을 시,
SELECT column1 FROM table1
그리고,
SELECT column2 FROM table2
위 두 쿼리의 결과를 합치고 싶을때 UNION을 사용할 수 있다.
SELECT column1 FROM table1
UNION
SELECT column2 FROM table2
실제 데이터로 예를 들어본다면,
-- employees 테이블
employee_id | employee_name | job_title
---------------------------------------
1 | John | Manager
2 | Emily | Salesperson
3 | Mike | Engineer
-- customers 테이블
customer_id | customer_name | email
-----------------------------------
101 | Alice | alice@example.com
102 | Bob | bob@example.com
103 | Charlie | charlie@example.com
이러한 데이터가 있을 때
두 테이블에서 서로 다른 컬럼을 선택하여 UNION으로 합쳐본다면,
SELECT employee_name, job_title FROM employees
UNION
SELECT customer_name, email FROM customers;
로 나타나고 결과는 아래와 같다.
employee_name | job_title
-----------------------------
John | Manager
Emily | Salesperson
Mike | Engineer
Alice | alice@example.com
Bob | bob@example.com
Charlie | charlie@example.com
emp테이블의 정보와 cus테이블의 정보가 합집합으로 나타남, 단 중복데이터가 있을 시 제거 후 나타
UNION ALL 이란
- UNION과 동일하게 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법이다.
- 중복된 값을 모두 보여준다.
'DB > Oracle' 카테고리의 다른 글
VARCHAR와 VARCHAR2의 차이 (0) | 2024.04.04 |
---|---|
DECODE 함수 (0) | 2024.04.04 |
[Oracle] Docker ① (0) | 2023.12.28 |
[Oracle] 변환함수 (0) | 2023.12.20 |
[Oracle] 일반함수 - NVL, COALESCE (0) | 2023.12.20 |