DB
[SQL] 서브 쿼리 활용(INSERT, UPDATE, DELETE, MERGE)
mndev
2024. 2. 6. 10:27
1. 서브쿼리 사용하여 데이터 입력
- emp테이블의 구조만 가져와서 emp2 테이블을 생성
create table emp2
as
select *
from emp
where 1 = 2;
values
절에 values대신 입력하고자 하는 서브 쿼리문을 작성- 부서번호가 10번인 사원들의 데이터를 emp2 테이블에 입력하는 것
insert into emp2(empno, ename, sal, deptno)
select empno, ename, sal, deptno
from emp
where deptno = 10;
2. 서브쿼리를 사용하여 데이터 수정하기
- 직업이 SALESMAN인 사원들의 월급을 ALLEN의 월급으로 변경
- SET절에 서브쿼리를 사용하여 직업이 SALESMAN인 사원들의 월급을 ALLEN월급으로 갱신
update emp
set sal = (select sal
from emp
where ename = 'ALLEN' )
where job = 'SALESMAN';
- update문은
모든 절
(update, set, where)에서 서브쿼리를 사용할 수 있음
update emp
set(sal, comm) = (select sal, comm
from emp
where ename = 'ALLEN' )
where ename = 'SCOTT';
3. 서브쿼리를 사용하여 데이터 삭제하기
- SCOTT보다 더 많은 월급을 받는 사원들을 삭제
delete from emp
where sal > (select sal
from emp
where ename = 'SCOTT');
4. 서브쿼리를 사용하여 데이터 합치기
사원 테이블을 이용해 SUMSAL 컬럼의 데이터를 부서 테이블의 부서 번호별 토탈 월급으로 갱신
using
절에 서브쿼리를 사용해 출력하는 데이터 dept 테이블을 mergemerge into dept d using (select deptno, sum(sal) sumsal from emp group by deptno) v on (d.deptno = v.deptno) when matched then update set d.sumsal = v.sumsal;