서브쿼리는 SQL을 실행하는 데 필요한 데이터를 추가 조회를 하기 위해 SQL문 내부에서 사용하는 SELECT문을 의미.
단, 서브쿼리는 데이터 처리 속도에 영향을 주므로 서브쿼리를 사용하는 것보다는 join을 사용하는 게 일반적으로 성능이 더 좋다.
서브쿼리는 SELECT(스칼라), FROM(인라인), WHERE, HAVING에 사용가능하다.
- 스칼라 서브쿼리(Scalar Subquery) : SELECT 절에 사용
- 인라인 뷰(Inline View) : FROM 절에 사용
- (중첩)서브쿼리 : WHERE 절에 사용
스칼라 서브쿼리(Scalar Subquery)
- SELECT 절에 사용
- 결과 값이 1개의 행이여야 되며, 2개 이상의 행이나 NULL값을 사용할 수 없음
[직원명, 부서코드, 부서명 출력]
SELECT ename, d.deptno, dname
FROM emp e JOIN dept d
ON e.deptno = d.deptno;
> 스칼라 서브쿼리
SELECT ename, deptno,
(SELECT dname FROM dept WHERE deptno=emp.deptno) dname
FROM emp;
인라인 뷰(Inline View)
- FROM 절에 사용
- 인라인 뷰는 하나의 임시 테이블
[직원명, 급여, 직급별 평균 급여 출력]
SELECT ename, e.deptno, e.salary, v.salary
FROM emp e JOIN
(SELECT deptno, AVG(salary) salary FROM emp GROUP BY deptno) v
ON e.deptno = v.deptno;
(중첩)서브쿼리
- WHERE 절에 사용
- 결과가 단일행이면 단일행 서브쿼리, 복수행이면 복수행 서브쿼리
구분 | 종류 |
단일행 | =, !=, >, >=, <, <= |
다중행 | IN, NOT IN, ANY, ALL |
'개념정복💫 > 오라클 ORACLE 정복' 카테고리의 다른 글
[ORACLE] 집합 연산자(UNION, UNION ALL, MINUS, INTERSECT) (0) | 2023.09.11 |
---|