SQL/SUBQUERY

SUBQUERY

행복하게사는게꿈 2020. 2. 5. 09:52

서브쿼리(SUBQUERY)란

- 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문
- 서브쿼리는 메인쿼리가 서브쿼리를 포함하는 종속적인 관계
- 서브쿼리는 메인쿼리의 컬럼을 모두 사용 가능 하지만, 메인쿼리는 서브쿼리의 컬럼을 사용할 수 없다.
- 서브쿼리는 서브쿼리 레벨과는 상관없이 항상 메인쿼리 레벨로 결과 집합이 생성

- 조인은 집합간의 곱의 관계, 1:1 조인 -> 1레벨의 집합 생성, N:M 조인 -> N*M레벨의 집합 생성

 

서브쿼리 사용 시 주의점

- 서브쿼리를 괄호로 감싸서 사용

- 메인쿼리에 없는 테이블도 서브쿼리에서 사용할 수 있음

- 서브쿼리는 단일 행(=, >. <= 등등) 또는 복수 행(ALL, ANY, IN) 비교 연산자와 함께 사용 가능

-

 

서브쿼리가 사용이 가능한 곳

- SELECT

- FROM

- WHERE

- HAVING

- DRDER BY

- INSERT문의 VALUES

- UPDATE문의 SET

 

서브쿼리의 반환 값에 따른 서브쿼리 종류

- 단일 행 서브쿼리(Single-Row Subquery): 서브쿼리의 결과가 1행

- 다중 행 서브쿼리(Multiple-Row Subquery) : 서브쿼리의 결과가 여러행

- 다중 컬럼 서브쿼리(Multi-Column Subquery) : 서브쿼리의 결과가 여러 컬럼

 

 

상호연관 서브쿼리 ( Correlated Subquery)

 - 메인 쿼리의 값을 서브 쿼리가 사용하고, 서브쿼리의 값을 받아서 메인 쿼리가 계산하는 구조

 - 서브쿼리만 실행 불가능

메인쿼리의 emp e 에서 e.deptno값을 서브쿼리 안의 emp m에서 m.deptno의 값과 비교해서 그 값으로 메인쿼리의 where절 돌림 

햄버거 구하는 예제