[SQLD/P] 비연관 쿼리/연관 쿼리

Hyo Kyun Lee·2022년 12월 26일
0

SQLD/P

목록 보기
70/82

1. 개요

서브쿼리는 동작형식, 변환 데이터 형태, 구문 위치 등에 따라 분류할 수 있다.

이 중 동작형식으로 구분한다면 비연관 쿼리, 연관 쿼리로 나눌 수 있다.

2-1. 비연관 쿼리

Un-Corrleated Sub Query, 서브쿼리에서 사용하는 컬럼이 메인쿼리에서 사용하지 않을 경우이다.

메인 쿼리에서 사용하는 컬럼의 범위를 제한하는 별도의 기준으로 사용하거나, 메인 쿼리에 서브 쿼리의 실행 결과를 그대로 사용할때 활용하는 쿼리이다.

SELECT * FROM
  student 
  WHERE dep_id =
  (
    SELECT id from department WHERE name = 'Computer'
  );

위 SQL처럼 메인 쿼리에서 사용하는 dep_id column은 서브쿼리에서 사용하지 않았으나, 해당 결과의 범위를 제한하는 용도로 사용하여 비연관 쿼리라 할 수 있다.

2-2. 연관쿼리

Corrleated Sub Query, 서브쿼리가 메인 쿼리에서 사용하는 컬럼을 가지고 있는 형태이다.

메인 쿼리 데이터를 서브쿼리상에서 특정 조건을 만족하는지 안하는지 확인하기 위해 주로 사용한다(EXIST or IN 등).

SELECT DEPT_ID, DEPT_NAME
FROM DEPT
WHERE
(
	SELECT DEPT_ID, DEPT_NAME
    FROM DEPT
    WHERE DEPT_NAME LIKE '정' || '%'
)

위 SQL처럼 메인 쿼리에서 사용하는 DEPT_ID column이 서브쿼리에서도 사용한다면, 연관 쿼리라 할 수 있다.

3. 참고자료

연관쿼리/비연관 쿼리 예제 - http://ithare.com/understanding-correlated-and-uncorrelated-sub-queries-in-sql/

0개의 댓글