본문 바로가기

데이터베이스

[SQL] 서브쿼리 개념

서브쿼리(subquery) 란 SQL 문을 실행하는데 필요한 데이터를 추가로 조회하기 위해

SQL문 내부에서 사용하는 SELECT 문을 의미한다.

 

메인 쿼리 : 서브쿼리의 결과 값을 사용하여 기능을 수행하는 영역

SELECT 조회할 열
FROM 조회할 테이블
WHERE 조건식 (SELECT 조회할 열
         	FROM 조회할 테이블
               WHERE 조건식 ) -> 서브 쿼리

 

 

예시 코드 이름이 JONES 보다 큰 SAL 값을 가진 사람의 모든 정보를 가져온다.

SELECT * 
FROM EMP 
WHERE SAL > 
    (SELECT SAL 
    FROM EMP 
    WHERE ENAME = 'JONES');

 

 


 

서브쿼리의 특징

 

1. 연산자와 같은 비교 또는 조회 대상의 오른쪽에 놓이며 괄호로 묶어서 사용한다.

2. 특수한 경우를 제외한 대부분의 서브쿼리에서는 ORDER BY 절을 사용할 수 없다.

3. 서브쿼리의 SELECT 절에 명시한 열은 메인쿼리의 비교 대상과 같은 자료형과 같은 개수로 지정해야 한다.

4. 서브쿼리에 있는 SELECT문의 결과 행 수는 함께 사용하는 메인쿼리의 연산자 종류와 호환 가능해야 한다.

 

 

 

평균 급여보다 많은 급여를 받는 직원을 구하는 코드

-- 평균 급여보다 큰 급여를 받는 직원
SELECT *
FROM EMP 
WHERE SAL 
    > (SELECT AVG(SAL)
    FROM EMP);

 

 

부서 번호를 지정한 부분만 출력 (ORDER BY 사용 위치)

SELECT * 
FROM EMP 
WHERE DEPTNO 
    IN(SELECT DEPTNO FROM DEPT WHERE DEPTNO > 10)
    ORDER BY DEPTNO; -- 서브쿼리 내에서 사용 불가