스칼라, 행, 테이블 하위 쿼리
단일 값, 단일 행 또는 전체 테이블을 반환하는 하위 쿼리를 사용하고 이를 SELECT, FROM, WHERE 절에 배치합니다.
스칼라, 행, 테이블 하위 쿼리은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
하위 쿼리란 무엇인가
하위 쿼리는 다른 SQL 문 안에 들어 있는 SELECT입니다. 다음과 같은 형태가 있습니다:
- 스칼라 하위 쿼리 — 단일 값을 반환합니다
- 행 하위 쿼리 — 단일 행을 반환합니다
- 테이블 하위 쿼리 — 관계를 반환합니다(FROM에서 사용)
스칼라 하위 쿼리
단일 값이 필요한 곳이라면 어디에서든 사용할 수 있습니다:
SELECT id, total,
total - (SELECT AVG(total) FROM orders) AS diff_from_avg
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';행 하위 쿼리
여러 열로 이루어진 한 행을 반환합니다. 덜 흔한 형태이며, 주로 행 생성자와 함께 사용합니다:
SELECT *
FROM orders
WHERE (status, country) = (
SELECT status, country FROM orders WHERE id = 1
);FROM의 테이블 하위 쿼리
쿼리 결과를 임시 테이블처럼 취급합니다:
SELECT country, AVG(big_order_total) AS avg_big
FROM (
SELECT country, total AS big_order_total
FROM orders
WHERE total > 1000
) AS sub
GROUP BY country;FROM 하위 쿼리에 별칭 지정하기
PostgreSQL에서는 FROM 하위 쿼리마다 별칭이 필요합니다. 별칭을 사용하지 않더라도 마찬가지입니다:
SELECT * FROM (SELECT 1) sub; -- "sub" requiredWHERE의 하위 쿼리
계산된 값 집합을 기준으로 필터링합니다:
SELECT * FROM users
WHERE id IN (
SELECT user_id FROM orders WHERE total > 100
);EXISTS / NOT EXISTS
하위 쿼리가 하나 이상의 행을 반환하는지 확인합니다:
SELECT * FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);SELECT의 하위 쿼리
행마다 실행되는 스칼라 하위 쿼리를 포함합니다:
SELECT id, full_name,
(SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u;
-- Often readable, but a LEFT JOIN + GROUP BY is usually faster.표현식으로 사용하는 하위 쿼리
둘 이상의 행을 반환하는 스칼라 하위 쿼리는 오류입니다:
SELECT (SELECT email FROM users);
-- ERROR: more than one row returned by a subquery used as an expressionJOIN으로 재구성할 시점
많은 "x IN (SELECT...)"는 JOIN으로 다시 작성할 수 있습니다. 더 읽기 쉬운 형태를 선택하세요. 최신 실행 계획 수립기는 두 형태에 대해 동일한 실행 계획을 만드는 경우가 많습니다.
하위 쿼리와 CTE 비교
같은 하위 쿼리가 두 번 필요하다면 CTE로 이름을 지정하세요. 다음 레슨에서 다룹니다.
복습
하위 쿼리에는 세 가지 유형이 있습니다.
- SELECT/WHERE의 스칼라 하위 쿼리
- 같음 비교에 사용하는 행 하위 쿼리
- FROM의 테이블 하위 쿼리
- "모든 일치 항목" 확인에 사용하는 EXISTS
빠른 확인
FROM 절 안에서 임시 테이블로 사용하는 하위 쿼리 형태는 무엇입니까?
자주 묻는 질문
“스칼라, 행, 테이블 하위 쿼리” 강의는 무료인가요?
네 — “스칼라, 행, 테이블 하위 쿼리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“스칼라, 행, 테이블 하위 쿼리”에서 뭘 배우나요?
단일 값, 단일 행 또는 전체 테이블을 반환하는 하위 쿼리를 사용하고 이를 SELECT, FROM, WHERE 절에 배치합니다. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“스칼라, 행, 테이블 하위 쿼리” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 스칼라, 행, 테이블 하위 쿼리
- 상관 하위 쿼리와 비상관 하위 쿼리
- 공통 테이블 표현식(WITH)
- 계층 구조를 위한 재귀 CTE