부속 질의(subquery): 다른 SQL 쿼리 내부에 포함된 SQL 쿼리를 의미함.
1.SELECT 절의 부속질의: select 절에 사용되며, 단일 값(스칼라 값)을 반환함. 각 행에 대해 한 번씩만 실행, 반환 값이 없으면 NULL 반환.
SELECT column1, (SELECT MAX(column2) FROM table2) AS max_column2
FROM table1;
2.FROM절 부속질의: FROM절에 사용되며, 테이블처럼 사용될 수 있는 결과 집합을 반환함. 주로 복잡한 조인 또는 집계 연산을 수행한 결과를 다시 사용하는 경우에 유용. 반드시 별칭( Alias)을 지정해야 함.
SELECT column1, column2
FROM (SELECT column1, column2 FROM table1 WHERE condition) AS subquery_alias;
3.WHERE절의 부속질의: WHERE절에 사용되며, 조건을 평가하는데 사용되는 값을 반환함. 비교 연산자, IN, NOT IN, EXISTS, NOT EXISTS 등과 함께 사용될 수 있음.
- 단일 행 부속질의(Single-Row Subquery): 하나의 행만 반환, =, >, <, >=, <=, <> 등의 비교 연산자와 함께 사용.
SELECT column1
FROM table1
WHERE column2 = (SELECT column2 FROM table2 WHERE condition);
- 다중 행 부속질의(Multiple-Row Subquery): 여러 개의 행을 반환함. IN, NOT IN, EXISTS, NOT EXISTS 연산자와 함께 사용. IN / NOT IN: 부속 질의 결과에 포함되는 / 포함되지 않는 값을 가진 행을 선택.
SELECT column1
FROM table1
WHERE column2 IN (SELECT column2 FROM table2 WHERE condition);
//EXISTS / NOT EXISTS: 부속 질의 결과가 존재하는 / 존재하지 않는 경우에만 외부 쿼리를 실행
SELECT column1
FROM table1
WHERE EXISTS (SELECT 1 FROM table2 WHERE table1.column2 = table2.column2);
'2025-1 > 데이터베이스' 카테고리의 다른 글
04. 정렬 쿼리, 집계 함수와 GROUP BY절, join (0) | 2025.04.10 |
---|---|
03. 무결성 제약조건 (0) | 2025.04.08 |
02.인덱스와 키 (0) | 2025.04.08 |
01.DBMS (0) | 2025.04.07 |