서브 쿼리(subquery)란 다른 쿼리 내부에 포함되어 있는 SELECT 문을 의미한다.
서브 쿼리를 포함하고 있는 쿼리를 외부 쿼리(outer query) 또는 메인 쿼리라고 부르며, 서브 쿼리는 내부 쿼리(inner query)라고도 부른다.
서브 쿼리는 비교 연산자의 오른쪽에 기술해야 하고 반드시 괄호() 로 감싸져 있어야 한다.
서브 쿼리의 종류
주의 사항
서브 쿼리가 사용이 가능한 곳
서브 쿼리의 결과가 다중행을 리턴 : IN, ANY, ALL
IN
ANY
적어도 하나만 만족하면 true
ALL
모두 만족하면 true
서브 쿼리의 결과가 다중 열을 리턴
FROM절에 사용되는 서브 쿼리를 인라인 뷰(Inline View)라 한다.
서브 쿼리가 FROM절에 사용되면 뷰(View)처럼 결과가 동적으로 생성된 테이블로 사용 가능
임시적인 뷰이기 때문에 데이터베이스에는 저장되지 않는다.
동적으로 생성된 테이블이기 때문에 column을 자유롭게 참조 가능
모든 사원의 평균 급여보다 적게 받는 사원들과 같은 부서에서 근무하는 사원의 사번, 이름, 급여, 부서번호
서브 쿼리를 이용한 CREATE
employees table을 emp_copy라는 이름으로 복사(컬럼 이름 동일)
employees table의 구조만 emp_blank라는 이름으로 생성(컬럼 이름 동일)
50번 부서의 사번(eid), 이름(name), 급여(sal), 부서번호(did)만 emp50이라는 이름으로 생성.
INSERT
employees table에서 부서번호가 80인 사원의 모든 정보를 emp_blank에 insert
UPDATE
employees table의 모든 사원의 평균 급여보다 적게 받는 emp50 table의 사원의 급여를 500 인상
DELETE