서브쿼리(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; -- 서브쿼리 내에서 사용 불가
'데이터베이스' 카테고리의 다른 글
[SQL] 명령 프롬프트에서 sql 실행 (0) | 2023.09.04 |
---|---|
[SQL] SELECT 문 실행 순서 (0) | 2023.09.01 |
[SQL] ROLLUP, CUBE 함수 (0) | 2023.09.01 |
[SQL] DML (Data Manipulation Language) 데이터 조작 언어 (0) | 2023.09.01 |
[SQL] DECODE 함수, CASE 문 (0) | 2023.08.31 |