DAY08 서브쿼리

sumin·2023년 7월 13일
0

아카데미

목록 보기
8/82
post-thumbnail

Sub Query

서브쿼리

어떤 SQL문의 결과를 다른 SQL문에세 전달하기 위해 두 개 이상의 SQL문을 하나의 SQL문으로 연결하는 방법으로 메인쿼리(Main Query)에 포함되는 쿼리를 서브쿼리(Sub Query)라고 한다.
서브쿼리를 먼저 실행한 뒤 그 결과를 메인쿼리로 전달하는 방식으로 동작한다.

종류

  1. 일반 서브쿼리 (Where 절)
    1) 단일 행 서브쿼리
    2) 다중 행 서브쿼리
  2. 스칼라 서브쿼리 (Select 절)
  3. 인라인 뷰 (From 절)

단일 행 서브쿼리(single row sub query)

  1. 결과가 1행이다. (1개이다.)
  2. 단일 행 서브쿼리인 경우
    1) WHERE 절에서 사용한 칼럼이 PK 또는 UNIQUE 칼럼인 경우
    2) 통계 함수를 사용한 경우
  3. 단일 행 서브쿼리 연산자 (=, !=, >, >=, <, <=)

다중 행 서브쿼리(multiple row sub query)

  1. 결과가 N행이다.
  2. 다중 행 서브쿼리 연산자 (IN, ANY, ALL 등)

스칼라 서브쿼리

하나의 칼럼처럼 사용되는 쿼리로 어떤 값을 반환하는 서브쿼리이다.
칼럼의 역활을 수행하기 위해서 반드시 한 개의 행(Row) 만을 반한해야 한다.
성능이 좋지 않기 때문에 자주 사용할 필요가 없다.

인라인 뷰(Inline View)

하나의 테이블처럼 사용되는 쿼리로 어떤 테이블 형식의 결과를 반환하는 서브쿼리이다.
인라인 뷰에서 조회한 칼럼만 메인쿼리에서 조회할 수 있다.
SELECT절의 수행 순서를 변경하기 위해서 사용 가능하다. FROM절의 수행 순서가 우선이기 때문에 먼저 처리하고자 하는 작업을 인라인 뷰를 작업하면 가장 먼저 처리하게 된다.

CREATE TABLE 과 DML

CREATE TABLE문에서 서브쿼리를 이용하여 다른 테이블의 구조와 데이터를 복사하여 새로운 테이블을 생성할 수 있다.
서브쿼리의 출력 결과가 새로운 테이블의 초기 데이터로 사용된다.
서브쿼리의 출력 결과가 없어도 새로운 테이블은 생성됨 . 초기 데이터가 없는 상태로 생성되기 때문
에 특정 테이블의 구조만 복사하고자 하는 경우에 유용하다.
CREATE TABLE 문에서 지정한 칼럼 개수 , 타입 과 서브쿼리의 칼럼 개수 , 타입 이 반드시 일치해야 한다.

DML의 INSERT UPDATE DELETE 도 동일하다.
INSERT

UPDATE

DELETE

profile
백엔드 준비생의 막 블로그

0개의 댓글