
[정의 및 특징] 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문
메인쿼리가 서브쿼리를 포함하는 종속적인 관계
서브쿼리는 메인쿼리의 칼럼을 사용할 수 있음
메인쿼리는 서브쿼리의 칼럼을 사용할 수 없음
[!! 주의 !!]
- 서브쿼리는 괄호로 묶어서 사용할 것
- 단일 행 혹은 복수 행 비교연산자와 함께 사용 가능
- 서브쿼리에서는 order by 사용할 수 없음
[서브쿼리 종류]

(예제) 서울은평경찰서의 강도 검거 건수와 서울시 경찰서 전체의 평균 강도 검거 건수를 조회
[!! 주의 !!] 서브쿼리의 select 절에서 두 개 이상의 컬럼을 반환하려할 경우 다음과 같은 에러 발생 

(예제) 경찰서별로 가장 많이 발생한 범죄 건수와 범죄 유형을 조회




(주의 1) 서브쿼리에 비교연산자가 있다면 싱글로우 쿼리를 사용해야함



(주의 2) 서브쿼리의 결과값이 두 개 이상이면 에러 발생

- 제시한 목록 중에 결과값이 포함되어 있으면 반환

(예제) SNL에 출연한 영화배우 조회
참고 : 이런 경우 IN보다는 JOIN을 사용하는 것이 보다 효율적임
- 서브쿼리에 결과값이 있으면 반환

(예제) 범죄 검거 혹은 발생 건수가 2000건 보다 큰 경찰서 조회

- 비교연산자 사용 & 서브쿼리 결과 중 최소한 하나라도 만족하는 결과값 있으면 반환

(예제) SNL에 출연한 적이 있는 연예인 이름 조회
- 비교연산자 사용 & 서브쿼리 결과를 모두 만족하면 반환

(예제)
- 연관 서브쿼리
- 하나 이상의 열(column)을 검색하는 서브쿼리
- WHERE절에서 사용
- 서브쿼리 내에 메인쿼리 컬럼이 같이 사용되는 경우 : 서브쿼리만 메인쿼리의 컬럼을 사용할 수 있음

(예제) 강동원과 성별, 소속사가 같은 언예인의 이름, 성별, 소속사를 조회
oil_price 테이블에서 셀프주유의 평균가격과 SK에너지의 가장 비싼가격을 Scalar Subquery를 사용하여 조회
oil_price 테이블에서 상표별로 가장 비싼 가격과 상호를 Inline View를 사용하여 조회
평균가격 보다 높은 주유소 상호와 가격을 Nested Subquery를 사용하여 조회
3번에서 조회한 주유소에서 주유한 연예인의 이름과 주유소, 주유일을 Nested Subquery를 사용하여 조회(with refueling 테이블)
refueling 테이블과 oil_price 테이블에서 10만원 이상 주유한 연예인 이름, 상호, 상표, 주유 금액, 가격을 Inline View를 사용하여 조회