안녕하세요 이승혁입니다.
오늘은 서브쿼리에 대한 이론과 실습을 진행해 보도록 하겠습니다.
※ 서브쿼리(Sub Query) ?
지금까지 살펴본 쿼리는 하나의 쿼리 블록으로 구성된 쿼리였습니다.
다른 쿼리 블록에 포함된 쿼리 블록을 서브 쿼리, 다른 쿼리 블록(서브 쿼리)를 포함한 쿼리 블록은 메인 쿼리라고 합니다.
※ 서브쿼리 사용 가능 절
SELECT절, FROM절, WHERE절, HAVING절, ORDER BY절, INSERT문의 VALUES절, UPDATE문의 SET 절
※ 스칼라 서브쿼리
서브 쿼리 중 SELECT 절에 사용하는 서브쿼리입니다.
스칼라 서브 쿼리는 단일 행 서브쿼리입니다.
select dname, (select max(sal)
from emp
where emp.deptno = dept.deptno) 부서최대월급
from dept;
-- 반환값을 2개 이상 지정시
select dname, (select max(sal),min(sal)
from emp
where emp.deptno = dept.deptno) 부서최대최소월급
from dept;
※ 중첩 서브쿼리
서브쿼리 중 WHERE 절과 HAVING 절에 사용하는 서브쿼리입니다.
select ename,sal,comm,deptno
from emp
where sal in (select sal -- deptno = 30 인 사원들의 월급만을 가진 테이블 ( 서브쿼리 )
from emp
where deptno=30);
※ 다중행 / 단일행 서브쿼리
서브쿼리가 반환하는 행의 개수에 따라 다중 행 서브 쿼리, 단일 행 서브 쿼리로 구분할 수 있다.
※ 다중 컬럼 서브쿼리
1. non pairwise 방식
where sal in (select sal
from emp
where deptno = 30)
and comm in (select comm
from emp
where deptno = 30);
2. pairwise 방식
where (sal,comm) in ( select sal, comm
from emp
where deptno=30);
※ non pair / pair 결과는 같지만 데이터의 정렬이 다르다.
※ 실행 계획이 다르기 때문이다. 실행 계획까지 볼 줄 알아야 대용량 빅 데이터를 빠르게 검색하고 분석할 수 있다.
실행 계획은 튜닝 파트에서 다루도록 하겠습니다.
※ 데이터 분석가의 주 업무
1. 일상적인 업무 : 매일 매일 봐야하는 통게 데이터를 뽑아내고 시각화
2. 특별한 업무 : 머신러닝을 이용해서 미래를 예측 , 딥러닝을 이용해서 예측과 분석
※ pair wise 방식과 non pair wise 방식은 결과가 같아보이나 실제로는 다른 결과가 나온다.
- update set sal = 1250 , comm = 300 where ename='KING' ;
오늘은 서브쿼리를 간단하게 다루어 보고 다음 시간에 조금 더 깊게 진행해보도록 하겠습니다
'프로그래밍 > SQL' 카테고리의 다른 글
SQL-17) DML - Insert, update, delete, merge : SQL, SQLD, SQLD 자격증, Oracle (0) | 2020.11.09 |
---|---|
SQL-16) exist , with , 계층형 질의 : SQl, SQLD 자격증, ADsP, 함수 (0) | 2020.11.05 |
SQL-15)집합연산자 - UNION, UNION ALL, INTERSECT, MINUS : sqld, sqld 자격증 (0) | 2020.11.05 |
SQL-14 ) 서브쿼리(Sub Query) - 2 : SQL, SQLD, SQLD자격증, 서브 쿼리, 오라클 (0) | 2020.11.05 |
SQL-12) JOIN 문법 -2 , ansi join : sqld, mysql, sql 자격증,DB 손해보험 (0) | 2020.10.29 |
SQL-11) JOIN 문법 - 1 (오라클 조인 문법) (0) | 2020.10.28 |
SQL-10) 데이터 분석 함수 (0) | 2020.10.27 |
SQL-9) group by, having , 함수(function) - 5 (0) | 2020.10.27 |