ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL - 서브쿼리(Subquery)
    Database/MySQL 2023. 2. 23. 14:12

    서브쿼리(Subquery)

    서브쿼리(Subquery)

     - 서브쿼리란 다른 쿼리 내부에 포함되어 있는 SELECT 문을 의미한다.

     - 서브쿼리를 포함하고 있는 쿼리를 외부쿼리라고 부르며, 서브쿼리는 내부쿼리라고도 부른다.

     - 또한, 서브쿼리는 반드시 괄호로 감싸져 있어야만 한다.

     

    SELECT
        ID, RESERVE_DATE, ROOM_NUM
    FROM
        RESERVATION
    WHERE
        NAME IN (SELECT
                     NAME
                 FROM
                     CUSTOMER
                 WHERE
                     ADDRESS = '서울')

     - 위 예제는 주소가 서울인 고객이 예약한 예약 정보만을 선택하는 예제이다.

     - 위 코드는 우선 CUSTOMER 테이블의 ADDRESS 필드값이 '서울'인 레코드의 NAME 필드를 모두 선택한다.

     - 그리고나서, RESERVATION 테이블에서 서브쿼리에 의해 선택된 데이터를 포함하는 레코드만을 다시 선택한다.

     

    SELECT
        ...
    FROM
        (서브쿼리) AS 테이블명
    WHERE
        ...

     - 서브쿼리는 SELECT 문의 FROM 절에서도 사용이 가능하다.

     - 서브쿼리에 의해 선택된 결과 집합은 FROM 절에서 하나의 테이블로써 사용할 수 있다.

     - 또한, SELECT 문의 FROM 절에서 사용되는 모든 테이블은 이름이 필요하기 때문에, FROM 절에서 사용되는 서브쿼리는 위 문법처럼 반드시 이름을 정의해 주어야 한다.

     

    서브쿼리의 특징

     - 서브쿼리를 사용하면 아래와 같은 장점을 얻을 수 있다.

     

    1. 서브쿼리는 쿼리를 구조화시키므로, 쿼리의 각 부분을 명확히 구분할 수 있게 해준다.

    2. 서브쿼리는 복잡한 JOIN이나 UNION과 같은 동작을 수행할 수 있는 또 다른 방법을 제공한다.

    3. 서브쿼리는 복잡한 JOIN이나 UNION 보다 좀 더 읽기 편하다.

     

    SELECT
        R.ID, R.RESERVE_DATE, R.ROOM_NUM
    FROM
        RESERVATION R, CUSTOMER C
    WHERE
        R.NAME = C.NAME
        AND C.ADDRESS = '서울';

     - 위 예제는 앞서 살펴본 주소가 서울인 고객이 예약한 예약 정보만을 선택하는 예제를 JOIN을 사용하여 표현한 것이다.

     - 쿼리가 복잡한 경우에는 JOIN이나 UNION을 사용하는 것보다 서브쿼리를 사용하는 것이 가독성 측면에서 좋을 수 있다.


    출처

    http://www.tcpschool.com/mysql/mysql_multipleTable_subquery

     

    728x90

    'Database > MySQL' 카테고리의 다른 글

    MySQL - 조인(JOIN)  (0) 2023.02.23
    MySQL - 패턴 매칭(LIKE, REGEXP)  (0) 2023.02.22
    MySQL - 데이터 조회(SELECT)  (0) 2023.02.22
    MySQL - 데이터 추가(INSERT), 수정(UPDATE), 삭제(DELETE)  (0) 2023.02.22
    MySQL - DB 구조 정의  (0) 2022.07.27

    댓글

Designed by Tistory.