💡 본 글은 ‘실습과 함께하는! 데이터베이스 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 ...