Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발 일기

SQL의 Subquery란?? (feat. 스칼라 서브쿼리 ,인라인뷰 서브쿼리) 본문

SQL

SQL의 Subquery란?? (feat. 스칼라 서브쿼리 ,인라인뷰 서브쿼리)

개발 일기 2021. 7. 12. 22:42

안녕하세요.

 

오늘은 SQL의 서브쿼리(Subquery)에 대해서 공부해보겠습니다.

 

서브쿼리란?

  - SELECT 문(Main)에 포함되어 있는 또 하나의 별도 SELECT문(Subquery)이다.

  - 여러 번의 SELECT문을 수행해야 얻을 수 있는 결과를 하나의 중첩된 SELECT 문으로 얻을 수 있다.

 

   A. 서브쿼리 위치에 따른 종류
      - SELECT 컬럼절  ☞ 스칼라 서브쿼리
      - FROM 절      ☞ 인라인 뷰(서브쿼리)
      - WHERE 절      ☞ 스칼라 서브쿼리[Nested 서브쿼리]
      - GROUP BY 절  ☞ 스칼라 서브쿼리
      - HAVING 절     ☞ 스칼라 서브쿼리
      - ORDER BY 절  ☞ 스칼라 서브쿼리
      
   B. 스칼라 서브쿼리(scalar subquery)
  
      - 하나의 SQL문으로 취급되지만 본질적으로 하나의 함수로 간주하면됨
      - 함수의 가장 큰 특징은 많은 INPUT 이 있더라도 OUTPUT은 하나만 나온다는것입니다.
      - 스칼라 서브쿼리도 일종의 함수이므로 중첩해서 사용가능하나 
         OUTPUT이 두개 이상이거나,OUTPUT의 데이타타입이 맞지않는 경우에는 에러를 발생시킵니다.
      - 대량의 데이타 처리 시 스칼라 쿼리의 남발은 성능저하를 유발 할 수 있으므로
         조인으로 대체하는것이 좋습니다. 

  
   C. 인라인뷰 서브쿼리(INLINE VIEW SUBQUERY)
      

      - SELECT 문의 FROM 절에 Subquery를 사용, 사용 방법은 VIEW와 유사하며 INLINE VIEW라고 칭함

      - INLINE VIEW는 Subquery 형식을 이용한 임시 뷰(SQL문장 내에서만 유효한 Temporary VIEW)

 

1. 스칼라 서브쿼리 예시

 

(WHERE절)

(1) SELECT MIN(SAL) FROM EMP; -> 검색 시 emp 테이블에서 min(sal)의 값은 800

 

 (2) (1)의 SELECT 문장을 활용하여 EMP 테이블의 WHERE 조건에 대입하여 일치하는 값 추출

   -> SELECT * FROM EMP WHERE SAL = (SELECT MIN(SAL) FROM EMP);

 

(COLUMN절)

(1) column에 subquery를 주어서 dept 테이블과 emp 테이블 사이의 PK와 FK가 일치하는 항목들을 노출시킴

  -->> 위 코드는 Join을 이용하면 더 편하게 사용이 가능하니 상황에 따라 판단해서 사용

natural join을 이용하여 subquery와 같은 결과값을 노출

 

2. 인라인뷰 서브쿼리 예시

(FROM절)

(1) emp 테이블의 deptno가 10인  Temporary VIEW(emp10_view) 생성 후 from절 출력

 

 

 

서브쿼리를 활용하여 보다 간단하게 SQL문을 작성하는 법을 공부해보았습니다.

감사합니다.

Comments