DB/Oracle

Oracle DB - UNION

진이최고다 2023. 5. 18. 22:22

UNION이란?

UNION은 SQL의 연산자중 하나로, 두 개 이상의 SELECT 문의 결과를 하나의 결과 집합으로 합칠 때 사용한다.

두 개의 테이블에서 선택한 열이 동일한 데이터유형을 가지고 있는 경우, 각 SELECT 문의 결과를 합칠 수 있다.

 

기본적으로 두 SELECT문에서 반환된 모든 행을 결합하여, 중복된 행을 제거한다. 이와 달리

UNION ALL 연산자는 중복된 행을 제거하지 않고 모든 행을 반환한다.

 

UNION 주요장점

1.여러 쿼리 결합 가능 : UNION은 서로 다른 SELECT 쿼리의 겨로가를 하나의 쿼리로 결합할 수 있다. 

이는 여러 개의 SELECT문을 통해 검색된 정보를 하나의 테이블로 볼 수 있게 해주어 분석과 보고가 더 쉽다.

 

2.데이터 중복 제거 :UNION은 중복된 행을 제거하므로, 각 SELECT문의 결과에 중복된 행이 있는 경우에도 각각의 고유 행만 결과에 포함된다.

 

3.유연성 향상 : UNION을 사용하면 테이블 간의 관계에 상관없이 서로 다른 테이블에서 데이터를 결합할 수 있다. 이는 데이터 분석과 관리에서 더 큰 유연성을 제공한다.

UNION을 사용할 때 주의해야 할 점은 모든 SELECT문이 동일한 수의 열을 반환하고, 이 열이 동일한 순서로 나타나고, 이들 각각이 유사한 데이터 유형을 가지고 있어야 한다는 것이다. 또한 중복된 행을 제거하므로 중복된 행을 보존하려면 UNION ALL을 사용해야 한다.

데이터 예제

CREATE TABLE fruit_shop1 (
    fruit_name VARCHAR(20)
);

INSERT INTO fruit_shop1 (fruit_name) VALUES ('사과');
INSERT INTO fruit_shop1 (fruit_name) VALUES ('바나나');
INSERT INTO fruit_shop1 (fruit_name) VALUES ('포도');

CREATE TABLE fruit_shop2 (
    fruit_name VARCHAR(20)
);

INSERT INTO fruit_shop2 (fruit_name) VALUES ('사과');
INSERT INTO fruit_shop2 (fruit_name) VALUES ('바나나');
INSERT INTO fruit_shop2 (fruit_name) VALUES ('체리');

 

UNION

SELECT fruit_name FROM fruit_shop1
UNION
SELECT fruit_name FROM fruit_shop2;
결과 :


UNION ALL

SELECT fruit_name FROM fruit_shop1
UNION ALL
SELECT fruit_name FROM fruit_shop2;
결과 :


MINUS

MINUS 연산자는 첫 번째 SELECT 문의 결과에서 두 번째 SELECT 문의 결과를 제거한다.

SELECT fruit_name FROM fruit_shop1
MINUS
SELECT fruit_name FROM fruit_shop2;
결과 :

 


INTERSECT

INTERSECT 연산자는 두 SELECT 문의 결과 중 공통된 결과만 반환한다.

SELECT fruit_name FROM fruit_shop1
INTERSECT
SELECT fruit_name FROM fruit_shop2;
결과 :