부속질의(SUBQUERY)란?
- 하나의 SQL 문 안에 다른 SQL 문이 중첩된 쿼리를 말함.
- 다른 테이블에서 가져온 데이터로 현재 테이블에 있는 정보를 찾거나 가공할 때 사용함.
- 보통 데이터가 대량일 때 데이터를 모두 합쳐서 연산하는 조인보다 필요한 데이터만 찾아서 공급해주는 부속질의가 성능이 더 좋음.
- 주질의(main query, 외부질의)와 부속질의(sub query, 내부질의)로 구성됨.
부속질의의 위치
- SELECT 절 : SELECT 절에서 사용되며 단일 값을 반환하기 때문에 스칼라 부속질의라고함
- 스칼라나 벡터를 나오게 끔 해서 쓰면 됨(값 하나, 1차원 배열)
- FROM 절 : FROM 절에서 결과를 뷰(VIEW) 형태로 반환하기 때문에 인라인 뷰라고 함
- 2차원 값, 즉 요약된 테이블 형태로 나오게끔 해서 쓰면 됨
- WHERE 절 : WHERE 절에서 술어와 같이 사용되며 결과를 한정시키기 위해 사용됨. 상관 혹은 비상관 형태.
- 술어에 따라 구조가 달라짐
부속질의의 실행 순서
비상관 부속질의 실행순서
- 서브쿼리와 주 쿼리가 전혀 상관없을 경우, 비상관 관계이며
- 실행순서는 하단의 그림과 같다.
상관 부속질의 실행순서
- 상위 부속질의의 투플을 이용하여 하위 부속질의를 계산한다. 상위 부속질의와 하위 부속질의가 독립적이지 않고 서로 관련을 맺고 있다.
- 실행순서는 비상관 부속질의와 반대이다.
- 예시(GROUP BY 없이 서브쿼리만으로, GROUP BY 연산하기)
SELECT B1.BOOKNAME FROM BOOK B1
WHERE B1.PRICE > (SELECT AVG(B2.PRICE) FROM BOOK B2
WHERE B2.PUBLISHER = B1.PUBLISHER);
'데이터 엔지니어링 > 데이터베이스 및 운영체제' 카테고리의 다른 글
SQL SUBQUERY 사용규칙, WHERE 부속 질의 (0) | 2023.03.23 |
---|---|
SQL 집합 연산, EXISTS (0) | 2023.03.23 |
SQL_기초(JOIN) (0) | 2023.03.22 |
SQL 기초_SELECT문 (0) | 2023.03.22 |
SQL 기초 (0) | 2023.03.22 |