집합 연산자

CHM·2022년 3월 23일
0

PostgreSQL

목록 보기
16/20
post-thumbnail

집합 연산자

  • 두 개 이상의 SELECT 결과에 대한 처리를 가능하게 하는 연산자
  • 합집합, 교집합, 차집합
  • 두 집합 사이에 작성
  • 두 집합의 컬럼 수, 각 컬럼마다 데이터 타입 일치해야 가능

UNION, UNION ALL

  • 두 집합의 합집합을 나타내는 연산자

  • UNION의 경우 중복된 값을 제거하여 하나만 출력

  • UNION ALL의 경우 중복된 값을 모두 출력

  • UNION은 중복된 값을 제거하기 위해 정렬 동반

  • 불필요한 UNION 연산은 쿼리 수행 속도에 부정적 영향을 미칠 수 있으니 조심해야 한다.

  • 사용 예시(10번과 20번 부서원의 집함 모음)

    • UNION ALL(중복값 출력)
      SELECT NAME, EMPNO, SAL
      FROM EMP2
      WHERE DEPTNO IN (10, 20)
      UNION ALL
      SELECT NAME, EMPNO, SAL
      FROM EMP2
      WHERE DEPTNO = 20
      ORDER BY NAME;
    • UNION(중복값 제외 출력)
      SELECT NAME, EMPNO, SAL
      FROM EMP2
      WHERE DEPTNO IN (10, 20)
      UNION
      SELECT NAME, EMPNO, SAL
      FROM EMP2
      WHERE DEPTNO = 20
      ORDER BY NAME;

INTERSECT

  • 여러 집합의 교집합을 출력
  • 두 집합 사이에 INTERSECT 나열
  • 두 집합의 컬럼 수, 컬럼의 데이터 타입 등 주의
  • 사용 예시
    • INTERSECT(교집합)
    SELECT NAME, EMPNO, SAL
    FROM EMP2
    WHERE DEPTNO IN (10, 20)
    INTERSECT
    SELECT NAME, EMPNO, SAL
    FROM EMP2
    WHERE DEPTNO = 20
    ORDER BY NAME;

EXCEPT

  • 두 집합의 차집합을 출력
  • 두 집합 사이에 EXCEPT 나열
  • 두 집합의 컬럼 수, 컬럼의 데이터 타입 등 주의
  • 타 DBMS에서는 MINUS 나열
  • 사용 예시
    • EXCEPT
    SELECT NAME, EMPNO, SAL
    FROM EMP2
    WHERE DEPTNO IN (10, 20)
    EXCEPT
    SELECT NAME, EMPNO, SAL
    FROM EMP2
    WHERE DEPTNO = 20
    ORDER BY NAME;

0개의 댓글

관련 채용 정보