Data Base_Oracle/SQL

SQL_Sub Query_Update & Delete

pathas 2020. 1. 8. 23:13

Sub Query _ DML에서 활용

여기서는 UPDATE와 DELETE만 다룰 예정입니다.

UPDATE

§ 형식

[ SQL> update 수정table명 set 필드명 = 수정할 값, 필드명2 = 수정할 값2,,,; ]
※ 필드 내의 모든 값이 수정되기 때문에 잘 쓰이지 않는 방식

 

[ SQL> update 수정table명
set 필드명 = 수정할 값, 필드명2 = 수정할 값2,,, where 조건식; ]

 

[ SQL> update 수정table명
set (필드명, 필드명2,,,) = (수정할 값, 수정할 값2,,,) where 조건식; ]

※ 수정할 값을 서브 쿼리를 이용해서 검색

# 예제

{ 문제 }
▷ b_emp3 테이블에서 SCOTT의 업무와 급여가 일치하도록 JONES의 업무와 급여를 수정
[ SQL> select job, sal from b_emp3 where ename='JONES';]

JOB SAL
MANAGER 2975

{ 풀이 }
▶ [ SQL> update b_emp3 set
(job, sal) = (select job, sal from b_emp3 where ename='SCOTT')
where ename='JONES';
1 행이 갱신되었습니다.
select job, sal from b_emp3 where ename='JONES' ]

JOB SAL
ANALYST 3000

DELETE

§ 형식

[ SQL> delete from table명; ]
※ 모든 데이터 삭제, 데이터 삭제 전에는 항상 백업을 받고 확인해야 함

 

[ SQL> delete from table명 where 조건식; ]

※ 조건식에 Sub Query를 사용

# 예제

{ 문제 }
▷ b_emp3 테이블에서 부서명이 'SALES'인 부서번호를 갖고 있는 사원의 정보를 삭제

▶ [SQL> delete from b_emp3
where deptno=(select deptno from dept where dname='SALES');
6 행이 삭제되었습니다.
select count(*) from b_emp3; ]

COUNT( * )
8

※ 총 14명의 직원 중 6명의 레코드가 삭제된 결과


UPDATE와 DELETE에서 서브 쿼리를 활용하는 방법을 살펴보았습니다.

두 구문 모두 신중하게 다루어야 하기 때문에 서브 쿼리를 사용한다면 조금 더 정확한

조건식을 작성할 수 있을 것입니다.