데이터베이스(DB)/SQL

[SQL] 서브쿼리(Sub Query) - Scalar, Inline View

개발계발게발 2022. 6. 22. 16:44
반응형

서브 쿼리 - 쿼리 안에 또 다른 쿼리 (Sub Query)

 

  • SELET문에 있는 서브 쿼리 - 스칼라 서브쿼리(Scalar Sub Query): 하나의 컬럼처럼 사용 (표현 용도) 

          Ex)SELECT col1, (SELECT ...)

  • FROM절에 있는 서브 쿼리 - 인라인 뷰(Inline View): 하나의 테이블처럼 사용 (테이블 대체 용도)

          Ex) FROM (SELECT ...)            

  • WHERE절에 있는 서브 쿼리 - 일반 서브쿼리: 하나의 변수(상수)처럼 사용 (서브쿼리의 결과에 따라 달라지는 조건절)

          Ex) WHERE col = (SELECT ...)

 

1. 스칼라 서브쿼리 (Scalar Subquery)

- select 절에서 사용하는 서브쿼리

- scalar는 '한번에 한가지만 처리하는' 이라는 뜻, scalar subquery에 의해 나오는 결과는 '하나의 행'이어야 한다.

SELECT col1,
	(SELECT vol1 FROM vol v WHERE v.vol_id = c.col_id)
	    	FROM col c

 

2. 인라인 뷰 (Inline View)

- 인라인 뷰는 FROM 절에 사용되는 서브 쿼리

- 인라인 뷰는 하나의 임시 테이블

- 메인 쿼리에서는 인라인 뷰에서 select한 컬럼만 사용 가능

SELECT c.*, v.vol_name
	FROM col c,
	    	(SELECT vol_id, vol_name, vol_date FROM vol) v
	    	    	WHERE c.col_id = v.vol_id)

 

 

3. 서브 쿼리

- 서브 쿼리는 WHERE 절에서 사용하는 쿼리

- 서브 쿼리의 결과가 단일행이면 단일행 서브쿼리, 복수행이면 복수행 서브쿼리

SELECT col.*, v.vol_id, v.vol_name
	FROM col c, (SELECT vol_id, vol_name, vol_date FROM vol) v
		WHERE c.col_id = v.vol_id

 

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

 

  • 단일 행 서브 쿼리(Single-Row SubQuery) - 서브쿼리의 결과가 1행
  • 다중 행 서브 쿼리(Multiple-Row SubQuery) - 서브쿼리의 결과가 여러 행
  • 다중 컬럼 서브 쿼리(Multi-Column SubQuery) - 서브쿼리의 결과가 여러 컬럼

 

 

반응형