ENFJ 비전공자 개발스터디

오라클 Oracle 집합 연산자 UNION INTERSECT MINUS 본문

Database

오라클 Oracle 집합 연산자 UNION INTERSECT MINUS

madb 2021. 12. 30. 18:06
반응형

오라클 Oracle 집합 연산자 

SELECT문을 실행하면 해당 조건에 맞는 데이터가 조회된다.

집합(Set) 연산자는 이러한 데이터 집합을 대상으로 연산을 수행하는 연산자를 말하며,

여러 개의 SELECT문을 연결해 또 다른 하나의 쿼리를 만드는 역할을 한다

 

그 종류로는 UNION, UNION ALL, INTERSECT, MINUS가 있다.

 

UNION 

UNON은 합집합을 의미한다.

예를 들어, 두 개의 데이터 집합이 있으면 각 집합 원소(SELECT 결과)를 모두 포함한 결과가 반환된다. 

 

CREATE TABLE exp_goods_asia (
           country VARCHAR2(10),
           seq     NUMBER,
           goods   VARCHAR2(80));

    INSERT INTO exp_goods_asia VALUES ('한국', 1, '원유제외 석유류');
    INSERT INTO exp_goods_asia VALUES ('한국', 2, '자동차');
    INSERT INTO exp_goods_asia VALUES ('한국', 3, '전자집적회로');
    INSERT INTO exp_goods_asia VALUES ('한국', 4, '선박');
    INSERT INTO exp_goods_asia VALUES ('한국', 5,  'LCD');
    INSERT INTO exp_goods_asia VALUES ('한국', 6,  '자동차부품');
    INSERT INTO exp_goods_asia VALUES ('한국', 7,  '휴대전화');
    INSERT INTO exp_goods_asia VALUES ('한국', 8,  '환식탄화수소');
    INSERT INTO exp_goods_asia VALUES ('한국', 9,  '무선송신기 디스플레이 부속품');
    INSERT INTO exp_goods_asia VALUES ('한국', 10,  '철 또는 비합금강');

    INSERT INTO exp_goods_asia VALUES ('일본', 1, '자동차');
    INSERT INTO exp_goods_asia VALUES ('일본', 2, '자동차부품');
    INSERT INTO exp_goods_asia VALUES ('일본', 3, '전자집적회로');
    INSERT INTO exp_goods_asia VALUES ('일본', 4, '선박');
    INSERT INTO exp_goods_asia VALUES ('일본', 5, '반도체웨이퍼');
    INSERT INTO exp_goods_asia VALUES ('일본', 6, '화물차');
    INSERT INTO exp_goods_asia VALUES ('일본', 7, '원유제외 석유류');
    INSERT INTO exp_goods_asia VALUES ('일본', 8, '건설기계');
    INSERT INTO exp_goods_asia VALUES ('일본', 9, '다이오드, 트랜지스터');
    INSERT INTO exp_goods_asia VALUES ('일본', 10, '기계류');
SELECT goods
      FROM exp_goods_asia
     WHERE country = '한국'
    UNION
    SELECT goods
      FROM exp_goods_asia
     WHERE country = '일본';

UNION ALL 중복된 항목도 모두 조회

SELECT goods
      FROM exp_goods_asia
     WHERE country = '한국'
    UNION ALL
    SELECT goods
      FROM exp_goods_asia
     WHERE country = '일본';

INTERSECT  교집합 데이터 집합에서 공통된 항목만 추출

SELECT goods
      FROM exp_goods_asia
     WHERE country = '한국'
    INTERSECT
    SELECT goods
      FROM exp_goods_asia
     WHERE country = '일본';

MINUS  차집합 한 데이터 집합을 기준으로 다른 데이터 집합과 공통된 항목을 제외한 결과만 추출

SELECT goods
      FROM exp_goods_asia
     WHERE country = '한국'
     MINUS
    SELECT goods
      FROM exp_goods_asia
     WHERE country = '일본';
SELECT goods
      FROM exp_goods_asia
     WHERE country = '일본'
     MINUS
    SELECT goods
      FROM exp_goods_asia
     WHERE country = '한국';
반응형