1. 서브쿼리 개요
💡 SUBQUERY는 다른 쿼리 내에서 실행되는 쿼리이다. SUBQUERY의 결과를 활용해서 복잡한 MAINQUERY를 작성해 한번에 여러 작업을 수행할 수 있다.
2. 서브쿼리 활용
(1) 서브쿼리 활용
# 서브쿼리를 활용한 메인쿼리
SELECT
menu_code,
menu_name,
menu_price,
category_code,
orderable_status
FROM
tbl_menu
WHERE
category_code = (SELECT
category_code
FROM
tbl_menu
WHERE
menu_name = '민트미역국');
(2) 상관 서브쿼리
- 메인 쿼리가 서브쿼리의 결과에 영향을 주는 경우 상관 서브쿼리라고 한다.
# 서브쿼리를 활용한 메인 쿼리
SELECT
menu_code,
menu_name,
menu_price,
category_code,
orderable_status
FROM
tbl_menu a
WHERE
menu_price > (SELECT
AVG(menu_price)
FROM
tbl_menu
WHERE
category_code = a.category_code);
(3) EXISTS
- 조회 결과가 있을 때 true 아니면 false
# EXISTS와 SUBQUERY를 활용한 메뉴가 있는 카테고리 조회
SELECT
category_name
FROM
tbl_category a
WHERE
EXISTS(
SELECT
1
FROM
tbl_menu b
WHERE
b.category_code = a.category_code
)
ORDER BY 1;
(4) CTE (Common Table Expressions)
- 파생 테이블과 비슷한 개념이며 코드의 가독성과 재사용성을 위해 파생 테이블 대신 사용하게 된다.)
WITH menucate AS (
SELECT
menu_name,
category_name
FROM
tbl_menu a
JOIN
tbl_category b on a.category_code = b.category_code
)
SELECT
*
FROM
menucate
ORDER BY
menu_name;'SKN > 02. DB' 카테고리의 다른 글
| 16. JOIN (0) | 2025.02.20 |
|---|---|
| 15. 데이터타입, 내장함수, 연산자 (0) | 2025.02.20 |
| 14. DML (0) | 2025.02.20 |
| 13. SQL 작성 (select / order_by / where / distinct) (0) | 2025.02.19 |
| 04. 개념/논리/물리 모델 (1) | 2025.02.19 |