[SQLD] 서브쿼리

도지는·2024년 3월 7일

SQLD

목록 보기
8/8

서브쿼리

  • 서브쿼리는 단일행 또는 복수행 비교연산자와 함께 사용할 수 있음
  • 서브쿼리는 SELECT, FROM, HAVING, ORDER BY, INSERT-VALUES, UPDATE-SET 절 등에서 사용 가능
  • 서브쿼리에서는 ORDER BY 사용 불가능

단일행 서브쿼리

  • 서브쿼리가 단일행 비교연산자와 함께 사용할 때는 서브쿼리의 결과 건수가 반드시 1건 이하여야함
    • 두 건 이상인 경우 오류 발생
    • 그룹 함수를 사용하는 경우 결과값이 1건이기 때문에 단일행 서브쿼리로써 사용 가능

다중행 서브쿼리

  • 서브쿼리의 결과가 두 건 이상 반환될 수 있다면 반드시 다중행 비교연산자와 함께 사용해야함
    • IN: 서브쿼리의 임의의 값과 동일한 조건
    • ALL: 서브쿼리의 모든 값을 만족하는 조건
    • ANY: 서브쿼리의 어느 하나의 값이라도 만족하는 조건
    • EXISTS: 서브쿼리의 결과를 만족하는 값이 존재하는지 여부를 확인

다중 컬럼 서브쿼리

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

  • 서브쿼리와 메인쿼리에서 비교하고자 하는 칼럼 개수와 위치가 동일해야함
  • 오라클에서 지원
  • SQL Server에서는 현재 지원하지 않음

연관 서브쿼리

: 서브쿼리 내에서 메인쿼리의 컬럼을 사용하는 서브쿼리

  • 일반적으로 메인쿼리가 먼저 실행되어, 읽혀진 데이터를 서브쿼리에서 조건이 맞는지 확인할 때 사용

비연관 서브쿼리

: 서브쿼리가 메인쿼리의 컬럼을 가지고 있지 않은 서브쿼리

  • 메인쿼리에 값을 제공하기 위한 목적

스칼라 서브쿼리

  • SELECT 절에서 사용함
  • 한 행, 한 컬럼만을 반환하는 서브쿼리

인라인뷰

  • FROM 절에서 사용하는 서브쿼리
  • 서브쿼리가 FROM 절에 사용되면 동적으로 생성된 테이블인 것 처럼 사용 가능
  • SQL문이 실행될 때만 임시적으로 생성되는 동적인 뷰이기 때문에 데이터베이스에 저장되지 않음
profile
왕왕

0개의 댓글