9.1.1 서브쿼리란
하나의 쿼리에서 SELECT 문 안에 또 다른 SELECT 문이 있을 때, 안에 포함된 SELECT 문을 서브쿼리라고 합니다. 서브쿼리(subquery)는 이름에서도 알 수 있듯이 보조쿼리 또는 하위쿼리를 의미합니다.
서브쿼리는 두 가지 측면으로 이해해야 합니다. 첫째, 형태적 측면에서 보면 서브쿼리는 하나의 쿼리 안에 포함된 독립적인 SELECT 문이고, 소괄호로 둘러싸여 있습니다. 그래서 서브쿼리를 포함하는 SELECT 문을 보통 메인쿼리(main query)라고 합니다. MySQL에서는 서브쿼리의 바깥쪽에 있어서 외부쿼리(outer query)라고 하는데, 외부쿼리보다는 메인쿼리라는 용어를 좀 더 많이 사용하므로 이 책에서도 메인쿼리라고 하겠습니다.
둘째, 의미적 측면에서 보면 서브쿼리에서 반환하는 결과 집합이 메인쿼리에서 보조 용도로 사용됩니다. 앞으로 자세히 알아보겠지만, 서브쿼리가 반환하는 결과 집합의 용도는 다양합니다. 서브쿼리가 메인쿼리의 어느 곳에 위치하느냐에 따라 특정 값을 반환하기도 하고 테이블처럼 사용되기도 하며 조건을 확인하는 데 사용되기도 합니다.
일반적으로 서브쿼리는 하나의 쿼리 안에 포함된, 소괄호로 둘러싸인 독립적인 SELECT 문으로 생각하면 됩니다. 하지만 의미적 측면을 고려해야 서브쿼리를 왜 사용해야 하는지 즉, 서브쿼리의 본질을 이해할 수 있습니다.