SQL(SQL Subquery)

김혜민·2024년 2월 14일

SQL

목록 보기
13/21

SQL Subquery

  • 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문
  • 메인 쿼리가 서브쿼리를 포함하는 종속적인 관계
  • 서브쿼리는 메인쿼리의 칼럼 사용 가능
  • 메인쿼리는 서브쿼리의 칼럼 사용 불가
  • Subquery는 괄호로 꼭 묶을것!!!!
  • 단일행 혹은 복수행 비교 연산자와 함께 사용 가능
  • Subquery에서는 order by 사용 X!!

1. Scalar Subquery - select절

select column1, (select column2 from table2 where condition) <-괄호 안에 있는게 Subquery! 괄호 밖에 있는게 MainQuery!
from table 1
where condition;

2. Inline view - from절

  • from절에 사용하는 서브쿼리, 메인쿼리에서는 인라인 뷰에서 조회한 Column만 사용가능!!
select a.column, b.column
from tabel a, (select column1, column2 from table2) b
where condition;

3. Nested Subquery - where절

  • where절에 사용

3-1) Single row - 하나의 열을 검색하는 서브쿼리

  • 서브쿼리가 비교연산자(=,>,<,...)랑 사용되는 경우, 서브쿼리의 검색 결과는 한개의 값을 가져야 함!!! (두개 이상인 경우 에러!)

3-2) Multiple row - 하나 이상의 열을 검색하는 서브쿼리

  • In vs Exists
    In - 무조건 서브쿼리의 모든 행을 검색하여 해당값을 In 연산자에 대입
    Exists - 서브쿼리에 해당하는 값을 1개라도 찾는다면 조회를 멈춤
    -> In은 끝까지 서브쿼리 조회! Exists는 찾을 때가지만 조회!
    -> 존재여부만을 찾을 땐 exists가 효율 Good!

*Any

  • 서브쿼리 결과 중 최소 하나라도 만족하면(비교연산자 사용)
    *All
  • 서브쿼리 결과를 모두 만족하면(비교연산자 사용)

3-3) Multiple column - 하나 이상의 행을 검색하는 서브쿼리

  • 서브쿼리 내에 메인쿼리 칼럼이 같이 사용되는 경우!

아직 완전히 이해하지 못했다....
예제 문제를 보면 어떤걸 써야할지 정확히 모르겠다...
예제를 통해서 더 연습해야할 듯...!!!!

profile
성장하는 주니어 데이터 분석가입니다!

0개의 댓글