본문 바로가기
DB

[DB / Oracle] Chapter 7. 집합 연산자(UNION / UNION ALL / INTERSECT / MINUS)

by nyeoo 2023. 11. 28.

1. 합집합

▶ UNION

  • 첫번째 컬럼 기준으로 오름차순 정렬이 됨, 중복되는 레코드(행)은 제외하고 결과를 출력함

 UNION ALL

  • 쿼리문에서 테이블을 명시한 순서(결합한 순서)대로 조회한 결과를 반환함, 중복되는 레코드(행)을 포함하여 결과 출력함
  • 정렬, 중복 비교가 포함된 UNION 은 부하가 발생하므로 실무에서는 리소스 소모가 적은 UNION ALL을 더 많이 사용함
  • 사용 예
    (TBL_JUMUNBACKUP : 오늘을 제외한 과거 모든 주문내역)
    (TBL_JUMUN : 오늘 주문내역
    SELECT T.JECODE, SUM(T.JUSU)
    FROM
    (
      SELECT *
      FROM TBL_JUMUNBACKUP
      UNION ALL
      SELECT *
      FROM TBL_JUMUN
    ) T
    GROUP BY JECODE;

2. 교집합

 INTERSECT

  • 두 테이블에서 중복되는 부분을 조회함
  • 사용 예
    (TBL_JUMUNBACKUP(과거 주문내역), TBL_JUMUN(오늘 주문 내역) 두 테이블에서 제품코드와 제품수량이 같은 목록들을 조회함)
    SELECT JECODE, JUSU
    FROM TBL_JUMUNBACKUP
    INTERSECT
    SELECT JECODE, JUSU
    FROM TBL_JUMUN;

3. 차집합

 MINUS

  • 두 테이블을 합한 후 교집합(중복되는 부분)을 제외한 부분을 조회함