-
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