: SQL 쿼리 내에서 또 다른 SQL 쿼리를 포함하는 구문입니다. [ SELECT문안에 또 다른 SELECT문 ]
- 서브 쿼리(혹은 이너쿼리)는 종종 메인 쿼리(부모 쿼리/외부쿼리)의 조건을 만족시키기 위한 데이터를 제공하거나,
계산된 값을 기반으로 메인 쿼리의 결과를 결정하는데 사용됩니다.
{ 중첩 쿼리라고도 불립니다. }
- 복잡한 데이터 검색 및 조작 작업을 수행할 때 매우 유용합니다.
- 서브 쿼리는 메인쿼리의 컬럼을 사용할 수 있지만, 메인 쿼리는 서브 쿼리의 컬럼을 사용할 수 없습니다.
- 즉, 서브쿼리가 메인쿼리의 특정 컬럼 값을 참조할 수 있다는 뜻 입니다.
SELECT e1.first_name, e1.last_name
FROM employees e1
WHERE e1.salary >
(SELECT AVG(e2.salary) FROM employees e2 WHERE e1.department_id = e2.department_id);
- 서브쿼리에서만 e1, e2 모두 참조.
# 메인쿼리가 서브쿼리의 컬럼을 사용할 수 없는 이유.
: 메인쿼리는 서브쿼리 내에서 정의된 컬럼을 직접 참조할 수 없습니다.
이는 서브쿼리가 메인쿼리의 컨텍스트 내에서 별도로 실행되기 때문입니다.
∇ 서브쿼리 사용이 가능한 곳.
: SELECT / FROM /WHERE /HAVING/ ORDER BY/ INSERT문의 VALUES/ UPDATE문의 SET
∇ 서브쿼리의 특징.
- 서브쿼리리는 쿼리르 구조화시키므로, 쿼리의 각 부분을 명확히 구분할 수 있게 해줍니다.
- 서브쿼리는 복잡한 JOIN이나 UNION과 같은 동작을 수행할 수 있는 또다른 방법을 제공합니다.