2024.12.19(목) / 4일차 / 서브쿼리

동준1234 ㅣ 2024. 12. 19. 17:38

*서브쿼리 

- 하나의 SQL 문 안에 포함된 또 다른 SELECT 문

- 메인 SQL문을 위해 보조 역할을 하는 쿼리

 

*서브쿼리의 구분

단일행, 다중행, 다중열 등의 서브쿼리를 분류하는 기준은 결과값의 형태이다.

구체적으로 서브쿼리가 반환하는 행(가로)의 수와 열(세로)의 수를 기준으로 나눈다.

 

1. 단일행 서브쿼리

- 서브쿼리의 결과가 한 개의 행과 한 개의 열인경우, 일반적으로 비교연산자(=, <, >)와 함께 사용됨

 

서브쿼리(SELECT AVG(SALARY) FROM EMPLOYEE) 는 전체 직원의 평균 급여를 반환함.

결과는 단일 값이며, 이를 SALARY 와 비교함.

 

2. 다중행 서브쿼리

서브쿼리의 결과가 여러 행이지만, 한개의 열로 반환되는 경우, 다중행 비교 연산자(IN, ANY, ALL)과 함께 사용됨

서브쿼리 (SELECT SALARY FROM EMPLOYEE WHERE DEPT_CODE = 'IT') 는 IT 부서 직원들의 급여를 반환함

메인 쿼리는 직원들의 이름과 이름코드를 EMPLOYEE 테이블에서 가져오는데, 이때 IT 부서 직원들의 급여중 가장 큰 값을 조회함.

 

3. 다중열 서브쿼리

서브쿼리의 결과가 한 행이지만, 여러 열로 반환되는 경우, 비교연산자를 사용할때(컬럼1, 컬럼2, ...) 형태로 다중 열을 처리함

 

추가) ANY, IN, ALL 의 차이점

 

  • ANY: 조건을 부분적으로 만족하면 충분한 경우.
  • IN: 값이 서브쿼리 결과에 포함되어 있는지 확인할 때.
  • ALL: 조건을 모두 만족해야 하는 경우.