K 개발자

부속질의 본문

데이터베이스/Oracle SQL

부속질의

ddingz 2021. 8. 22. 18:37

부속질의

SQL 문 내에 또 다른 SQL 문을 작성하는 것을 부속질의subquery라고 한다.
부속질의는 질의가 중첩되어 있다는 의미에서 중첩질의nested query라고도 한다.
부속질의 간에는 상하 관계가 있으며, 실행 순서는 하위 부속질의를 먼저 실행하고 그 결과를 이용하여 상위 부속질의를 실행한다.
반면 상관 부속질의correlated subquery는 상위 부속질의의 투플을 이용하여 하위 부속질의를 계산한다.
즉 상위 부속질의와 하위 부속질의가 독립적이지 않고 서로 관련을 맺고 있다.


연습문제

-- 가장 비싼 도서의 이름을 보이시오.
SELECT bookname
FROM Book
WHERE price = (
    SELECT MAX(price)
    FROM Book);
-- 도서를 구매한 적이 있는 고객의 이름을 검색하시오.
SELECT name
FROM Customer
WHERE custid IN (
    SELECT custid
    FROM Orders);
-- '대한미디어'에서 출판한 도서를 구매한 고객의 이름을 보이시오.
SELECT name
FROM Customer
WHERE custid IN (
    SELECT custid
    FROM Orders
    WHERE bookid IN (
        SELECT bookid
        FROM Book
        WHERE publisher = '대한미디어'));
-- 출판사별로 출판사의 평균 도서 가격보다 비싼 도서를 구하시오.
SELECT b1.bookname
FROM Book b1
WHERE b1.price > (
    SELECT avg(b2.price)
    FROM Book b2
    WHERE b2.publisher = b1.publisher);

'데이터베이스 > Oracle SQL' 카테고리의 다른 글

EXISTS  (0) 2021.08.22
집합연산  (0) 2021.08.22
조인  (0) 2021.08.22
GROUP BY 문  (0) 2021.08.22
집계 함수  (0) 2021.08.22
Comments