SQL ORACLE
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: 조건을 모두 만족해야 하는 경우.