old posting/MySQL

[SQL] 집합연산자

마케팅스프린트 2021. 5. 25. 16:09
  • 집합연산자
    • 여러개의 질의 결과를 연결하여 하나로 결합하는 방식

 

  • 집합연산자를 사용하는 경우
    1. 서로 다른 테이블에서 유사한 형태의 결과를 반환하는 것을 하나의 결과로 합치고자 할 때
    2. 동일 테이블에서 서로 다른 질의를 수행하여 합치고자 할 때
    3. 튜닝관점에서 실행계획을 분리하고자 하는 목적
      • 튜닝관점
        • 데이터베이스의 응용, 데이터베이스 자체, 운영체제의 조정 등을 통해 최적의 자원으로 성능을 얻을 수 있도록 개선하는 작업

 

  • 집합연산자 사용 제약사항
    1. SELECT 절의 컬럼 수가 동일해야 한다.
    2. SELECT 절의 동일 위치에 존재하는 컬럼의 데이터 타입이 상호 호환 가능해야한다.
      • 반드시 통일된 데이터 타입일 필요는 없다.

 

  • 집합연산자 종류
    • UNION
      • 여러개의 SQL문의 결과에 대한 합집합으로 결과에서 모든 중복된 행은 하나의 행으로 만든다.
        • 중복값 제거, 정렬수행
    • UNION ALL
      • 여러개의 SQL문의 결과에 대한 합집합으로 중복된 행도 그대로 결과로 표시된다.
      • 단순히 결과만 합쳐놓은 것이며, 일반적으로 여러 질의 결과가 상호 배타적인(Exclusive) 경우 많이 사용한다.
      • 개별 SQL문의 결과가 서로 중복되지 않는 경우 UNION과 결과가 동일하다.
        • 결과의 정렬 순서에는 차이가 있을 수 있다.
        • 중복값 제거 안함, 정렬수행 안함
    • INTERSECT
      • 여러개의 SQL문의 결과에 대한 교집합이다.
      • 중복된 행은 하나의 행으로 만든다.
        • 정렬수행
    • EXCEPT or MINUS
      • 앞의 SQL문의 결과에서 뒤의 SQL문의 결과에 대한 차집합이다.
      • 중복된 행은 하나의 행으로 만든다.
        • 일부 데이터베이스는 MINUS를 사용한다.
        • 정렬수행, 쿼리 순서 중요
        • Oracle의 경우 MINUS를 사용한다.