본문 바로가기

[DB]DataBase/[SQL]

[SQLD] 집합 연산자

728x90
반응형

집합 연산자

  • SELECT문 결과를 하나의 집합으로 간주하고, 집합에 대한 합집합, 교집합, 차집합을 연산
  • SELECT문과 SELECT문 사이에 집합 연산자 정의
  • 두 집합의 컬럼이 동일하게 구성
    • 컬럼의 데이터 타입과 순서가 일치해야 함
  • 전체 집합의 데이터 타입과 컬럼명은 첫번째 집합에 의해 결정

일반 집합 연산자를 SQL과 비교

  • UNION 연산은 UNION 기능으로
  • INTERSECTION 연산은 INTERSECTION 기능으로
  • DIFFERENCE 연산은 EXCEPT(오라클은 MINUS) 기능으로
  • PRODUCT 연산은 CROSS JOIN 기능으로 구현되었다.

 

집합 연산자 종류

집합 연산자의 종류

합집합

  • 두 집합의 총 합 (전체)을 출력
  • UNION, UNION ALL 사용

1) UNION

  • 중복된 데이터는 한 번만 출력
  • 중복된 데이터를 제거하기 위해 내부적으로 정렬을 수행
  • 중복된 데이터가 없는 경우 UNION 대신 UNION ALL 사용
    • 불필요한 정렬 수행을 방지하기 위함

2) UNION ALL

  • 중복된 데이터도 전체 출력

교집합

  • 두 집합 사이에 INTERSECT 전달
  • 두 집합의 교집합(공통으로 갖는 행) 출력

차집합

  • 두 집합 사이에 MINUS 전달
  • 두 집합의 차집합 (한 집합에만 존재하는 행) 출력
  • A-B 와 B-A 의 결과는 다르므로 집합의 순서에 주의

 

집합 연산자 사용 시 주의사항

  1. 두 집합의 컬럼 수가 일치해야 한다.
  2. 두 집합의 컬럼 순서가 일치해야 한다.
  3. 두 집합의 각 컬럼의 데이터 타입이 일치해야 한다.
  4. 각 컬럼의 사이즈(Volume)는 달라도 된다.
반응형

'[DB]DataBase > [SQL]' 카테고리의 다른 글

[SQLD] 윈도우 함수  (0) 2024.05.16
[SQLD] 그룹 함수  (0) 2024.05.09
[SQLD] 서브 쿼리  (0) 2024.05.05
[SQLD] 표준 조인  (0) 2024.05.05
[SQLD] 순수 관계 연산자  (0) 2024.05.03