서브쿼리 : SQL에서 사용되는 쿼리 안에 포함된 또 다른 쿼리를 의미하며, 서브쿼리는 주로 메인 쿼리의 조건이나 결과를 도출하기 위해 사용한다.
비상관 서브쿼리 :
-. 서브쿼리가 메인 쿼리와 상관없이 독립적으로 실행.
-. 서브쿼리의 실행은 메인 쿼리의 각 행에 대해 한 번만 수행
~ ALL 연산자 : 서브쿼리 모든 결과에 대해 ~
SELECT * FROM Products
WHERE Price > ALL (
SELECT Price FROM Products
WHERE CategoryID = 2
);
~ ANY 연산자 : 서브쿼리 하나 이상의 결과에 대해 ~
SELECT
CategoryID, CategoryName, Description
FROM Categories
WHERE
CategoryID = ANY
(SELECT CategoryID FROM Products
WHERE Price > 50);
상관 서브쿼리 :
-. 메인 쿼리와 연관되어있음
-. 메인 쿼리의 한 행에 대해 여러 번 실행
-. 서브쿼리의 실행은 메인 쿼리의 각 행에 대한 결과에 따라 동적으로 변경
EXISTS 연산자 : 서브쿼리문에 해당하는 조건에 대해 ~
SELECT
CategoryID, CategoryName,
(SELECT MAX(P.Price) FROM Products P
WHERE P.CategoryID = C.CategoryID
) AS MaxPrice
FROM Categories C
WHERE EXISTS (
SELECT * FROM Products P
WHERE P.CategoryID = C.CategoryID
AND P.Price > 80
);