Oracle 12c 데이터베이스 06 - 서브쿼리, 집합연산

💡 본 글은 ‘실습과 함께하는! 데이터베이스 Oracle 12c’ 강의 내용을 바탕으로 정리하였습니다.

서브쿼리, 집합연산

서브쿼리

  • 쿼리문 내에 또 다른 쿼리문이 있는 형태
  • 서브쿼리는 메인쿼리에 포함되는 관계
    • ()를 사용해 감싸는 형태
    • ORDER BY를 사용하지 못함
  • 종류
    • 단일행 서브쿼리: 결과가 레코드 하나인 서브쿼리
    • 다중행 서브쿼리: 결과가 레코드 여러 개인 서브쿼리
      • IN: 결과값 중에 있는 것 중에서 의미, 일종의 서브셋
      • ALL: 여러 개의 레코드의 AND 효과(가장 큰 값 보다 큰) sal > ALL(SELECT sal ...)
      • ANY: 여러 개의 레코드의 OR 효과(가장 작은 값 보다 큰)
      • EXISTS
    • 멀티컬럼 서브쿼리: 결과가 컬럼 여러 개인 서브쿼리

집합연산

합집합(UNION)

  • 두 쿼리의 결과값을 합쳐서 리턴
  • 두 쿼리의 결과 형식이 동일해야 함(기본적으로 DISTINCT 적용)
  • 다른 테이블이라도 결과값의 형식만 일치하면 됨
  • 종류
    • UNION
    • UNION ALL: 중복을 허용하는 UNION

(문법)

  SELECT 쿼리1 UNION (ALL) SELECT 쿼리2 UNION ...

교집합(INTERSECT)

  • 두 쿼리의 결과값을 합쳐서 리턴
  • 두 쿼리의 결과 형식이 동일해야 함(기본적으로 DISTINCT 적용)
  • 다른 테이블이라도 결과값의 형식만 일치하면 됨

(문법)

  SELECT 쿼리1 INTERSECT SELECT 쿼리2 ...

차집합(MINUS/EXCEPT)

  • 쿼리1 결과값에서 쿼리2 결과값을 빼서 리턴함

(문법)

  SELECT 쿼리1 MINUS SELECT 쿼리2 ...