본문 바로가기
카테고리 없음

SQLD 정리 / 과목 2 SQL 기본 및 활용 / 제2장 SQL 활용 / 제4절 서브쿼리

by RUCKUS 2021. 5. 27.

제4절 서브쿼리

 

  • 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문
  • 서브 쿼리는 메인 쿼리의 칼럼을 모두 사용할 수 있지만, 메인 쿼리는 서브 쿼리의 칼럼을 사용할 수 없다.
  • 서브쿼리를 괄호로 감싸서 사용한다.
  • 단일행 또는 복수행 비교연산자와 함께 사용가능하다.
  • ORDER BY를 사용하지 못한다
  • SELECT절, FROM절, WHERE절, HAVING절, ORDER BY 절, INSERT의 VALUES절, UPDATE의 SET절에 사용가능

1. 단일행 서브 쿼리

  • 서브쿼리가 단일 행 비교 연산자(=, <, >, <=, >=, <>)와 함께 사용할 때는 서브쿼리의 결과의 건수가 반드시 1개 이하여야 한다.

2. 다중행 서브 쿼리

  • 서브쿼리 결과가 2건 이상 반활 될 수 있다면 반드시 다중 행 비교 연산자와 함께 사용해야 한다.
    SOME은 ANY와 동일하다.

3. 다중 칼럼 서브쿼리

  • 서브 쿼리의 결과로 여러 개의 칼럼이 반환되어 메인 쿼리의 조건과 동시에 비교되는 것

4. 연관 서브 쿼리

  • 서브쿼리내에 메인쿼리칼럼이 사용된 서브 쿼리
  • EXISTS는 항상 연관 서브쿼리로 사용

5. 그 밖의 위치에서 서브쿼리 사용하기

  (1) SELECT 절에 서브쿼리 사용하기

  • Scalar 서브쿼리 라고 한다. : 한행, 한 칼럼 만을 반환하는 서브쿼리

  (2) FROM 절에 서브쿼리 사용하기

  • Inline View라고 한다. (동적뷰, Dynamic view)
  • 인라인 뷰에서는 ORDER BY절을 사용할 수 있다.

  (3) HAVING 절에 서브쿼리 사용하기

  • HAVING절의 조건에 서브쿼리를 이용하여 조건의 값을 반환

  (4) UPDATE 문의 SET 절에서 사용하기

  • 테이블에 칼럼이 추가 되었을때, 해당 칼럼의 값을 다른 테이블에서 대입해서 넣을때 서브쿼리로 사용

  (5) INSERT문의 VALUES절에서 사용하기

  • 게시판글 넣을때 게시글번호, 게시글그룹, 댓글 번호, 들여쓰기 등을 +1해주는 식으로 할때 사용했었다.
    (SEQ처럼 사용)

 

6. VIEW(뷰)

  • 실제 데이터를 가지고 있지 않은 가상 테이블, 뷰 정의만 가지고 있다.
  • CREATE VIEW 뷰명
    AS SELECT 칼럼명
    FROM 테이블명
    ...조건식...