코딩 공부/DB

[DB] 서브 쿼리

희원96 2022. 4. 5. 10:43

서브 쿼리

- 서브 쿼리(내부 질의)는 기본 질의 실행 전에 한번 실행됩니다.

- 서브 쿼리의 결과는 메인쿼리(외부 질의)에 사용됩니다.

- WHERE절, HAVING절,FROM절에 자주 사용된다.

 

서브 쿼리 사용해보기
Abel이라는 사원보다 더 많은 급여를 받는 사원의 이름과 급여를 출력하시오.

(서브쿼리 프로세스)

1. 어떤 값을 모르고 있는지 먼저 찾아보자('Abel'의 급여)

2. 모르는 값을 서브쿼리를 통해서 찾자

3. 모르는 값을 서브쿼리의 어떤 컬럼으로 찾을지 결정(salary)

4. 서브쿼리가 넘겨주는 값을 메인쿼리의 누가 받을지 결정

   => 메인쿼리의 어떤 컬럼이 받을것인지 결정(salary)

5. 어떤 연산자를 사용할것인지 결정( 결과가 하나면 단일연산자, 복수면 in과 같은 복수연산자를 사용)

 

- 서브 쿼리는 괄호로 묶어야 한다.

- 읽기 쉽도록 비교 조건의 오른쪽에 서브 쿼리를 넣습니다.

- 서브 쿼리의  ORDER BY절은 TOP-N 분석을 수행하지 않을 경우에는 필요가 없다.

- 서브 쿼리에 사용되는 비교 조건은 단일 행 연산자 및 다중 행 연산자로 분류된다.

- 서브 쿼리의 컬럼과 메인쿼리의 받는 컬럼의 데이터타입이 반드시 같아야한다.(컬럼이름은 틀려도 상관 없음)

 

단일 행 서브 쿼리 

- 내부 SELECT 문에서 하나의 행을 반환하는 서브 쿼리

- 단일 행 연산자를 사용한다.

 

사원번호 141과 업무 ID가 동일하면서 사원 143보다 급여가 많은 사원을 표시해보자.

 

 

 

서브쿼리를 사용하여 최저급여를 받는 사원의 이름과 업무명을 출력해보자.

 

 

'IT'라는 부서명을 가진 사원의 이름과 급여를 출력하시오.

 

 HAVING 절에 서브쿼리 사용해보기

다중 행 서브 쿼리

- 내부 SELECT 문에서 여러 행을 반환하는 서브 쿼리

 

'IT PROG'가 아니면서 급여가 임의의 'IT PROG'보다 낮은 사원을 표시해보자.