sql (2) 서브쿼리
이 포스팅 내용은 얄팍한 코딩사전
강좌를 수강하며 학습한 내용과 추가로 공부한 내용을 정리한 포스팅입니다.
서브쿼리
1. 비상관 서브쿼리
: 원래 쿼리와 괄호 안 쿼리가 독자적으로 실행됨.
SELECT * FROM Products
WHERE Price < (
SELECT AVG(Price) FROM Products
);
-
~ALL
,~ANY
: 서브쿼리의 모든 / 하나 이상의 결과에 대해 ~ 하다.SELECT * FROM Products WHERE Price > ALL ( SELECT Price FROM Products WHERE CategoryID = 2 );
-> Products 테이블에서 모든 컬럼을 가져오는데, Price가 괄호() 의
모든
값 보다 큰 경우SELECT CategoryID, CategoryName, Description FROM Categories WHERE CategoryID = ANY (SELECT CategoryID FROM Products WHERE Price > 50);
-> Categories 테이블에서 CategoryID, CategoryName, Description 컬럼을 가져오는데, CategoryId가 괄호() 의 값 중
하나라도
해당되는게 있는 경우
2. 상관 서브쿼리
:
SELECT ProductID, ProductName,
(
SELECT CategoryName
FROM Categories C
WHERE C.CategoryID = P.CategoryID
) AS CategoryName
FROM Products P;
-> ProductID, ProductName, 그리고 괄호() 안의 내용을 CategoryName로 하여 Products 테이블에서 가져옴
-> 괄호()는, Categories 테이블에서 Categories 테이블의.CategoryID와 Products 테이블의 CategoryID가 같은 것의 CategoryName 을 가져옴
-
Categories 테이블
-
Products 테이블
-
서브쿼리 결과
-> 정규화를 통해서 나누어진 내용에 대해서 가져오는구나!
-> 서브쿼리도 가능하지만
JOIN
테이블로도 가능! -
EXISTS
/NOT EXISTS
: 조건에 해당하는 / 해당하지 않는 데이터 가져오기SELECT CategoryID, CategoryName FROM Categories C WHERE EXISTS ( SELECT * FROM Products P WHERE P.CategoryID = C.CategoryID AND P.Price > 80 );
마지막 수정일시: 2022-12-13 01:18
댓글남기기