Database | SUBQUERY

새니·2023년 6월 29일

database

목록 보기
5/8
post-thumbnail

SUBQUERY

하나의 select만으로 원하는 데이터를 조회할 수 없을 때 사용하는 방법으로 여러개의 select문장을 하나로 합쳐 하나의 실행 가능한 SQL 문장으로 만들어서 원하는 데이터를 조회할 수 있다. -> 하나의 SQL문장 안에 또 다른 SQL문장이 들어간다.

SUBQUERY의 기본 문법

SQL> SELECT select_list
FROM 테이블
WHERE 컬럼명 연산자(SELECT selct_list 
                          FROM 테이블);
  • 바깥 쪽 SELECT문을 메인 쿼리 (Main-Query 또는 Outer-Query)
  • 안쪽 select문을 서브쿼리 (Sub-Query 또는 Inner-Query)라고 부른다.

특징

  • 서브쿼리는 반드시 괄호를 사용 해야하며 실행 순서는 서브쿼리가 먼저 실행 되고, 실행된 결과가 메인쿼리에 전달되어 실행된다. 따라서 메인쿼리는 서브쿼리의 컬럼을 사용할 수 없다.
  • 서브쿼리는 메인 쿼리의 다음 부부네 위치할 수 있다.
    1) select/delete/update문의 from절과 where절
    2) select 문의 having절
    3) insert 문의 into절
    4) update 문의 set절
    일반적으로 서브쿼리는 where절에 사용되는 쿼리를 말함!

SUBQUERY의 종류

종류설명사용 가능 연산자
단일행 서브쿼리   서브쿼리 실행 결과가 한 개의 행을 반환한다.  =, >, >=, <,<=, != 와 같은 비교 연산자 
복수행 서브쿼리서브쿼리 실행 결과가 복수 개의 행을 반환한다.  IN,ANY,ALL, EXIST 연산자



1. 단일행 서브쿼리

  • 단일행 서브쿼리는 서브쿼리가 실행되어 반드시 한개의 행을 반환하는 서브쿼리를 의미한다. 대표적으로 기본키(primary key)를 이용하거나 max,mix,sum 같은 그룹함수를 사용하여 검색하는 경우로서 반드시 단일행 연산자를 사용하여 메인쿼리와 연산되어야 한다.

2. 복수행 서브쿼리

  • 복수행 서브쿼리는 서브쿼리가 실행되어 반환되는 결과가 하나 이상의 행일 떄 사용하는 서브쿼리이다. 반드시 복수형 연산자와 함께 사용해야 되며 사용 가능한 복수행 연산자는 다음과 같다.
종류설명
IN   메인 쿼리와 서브쿼리가 IN연산자로 비교한다. 서브쿼리 결과값이 복수개인 경우에 사용된다.
ANY    ANY 연산자는 복수행 서브쿼리에서 > 또는 < 같은 비교 연산자를 사용하고자 할 때 사용되며 검색 조건이 하나라도 일치하면 참이다.
ALL    ALL 연산자는 복수행 서브쿼리에서 > 또는 < 같은 비교 연산자를 사용하고자 할 때 사용되며 검색 조건의 모든 값이 일치하면 참이다.
EXIST    EXSIT 서브 쿼리의 반환값이 존재하면 메인 쿼리를 실행하고 반환값이 없으면 메인 쿼리를 실행하지 않는다.
profile
새니의 뒤죽박죽 개발 일기📝

0개의 댓글