*.SubQuery와 DML의 만남
DML :
insert into 테이블명 () values ()
update 테이블명 set 컬럼='' where 조건.
delete 테이블명 where 조건.
--마케팅부서를 제주도로 이전
update dept
set loc='제주도' where dname='마케팅부'
--60번 부서의 지역을 마케팅부의 지역으로 이전
update dept
set loc=(select loc from dept where dname='마케팅부')
where deptno = 60
--50번 부서의 이름과 지역을 40번부서의 것과 동일하게.
update dept
set loc=(select loc from dept where deptno=40),
dname=(select dname from dept where deptno=40)
where deptno=50
--=>> 복수컬럼이면 동일한 갯수/타입이여야 함
update dept
set (loc,dname)=(select loc,dname from dept where deptno=40)
where deptno=50
--8000,'이승기','사원',50번부서 사원등록
insert into emp
(empno, ename, job, deptno)
values (8000,'이승기','사원',50);
--이승기 사원이 근무하는 부서명은 오락부, 지역은 60번동일
update dept
set (dname,loc) = (select '오락부',loc from dept where deptno=60)
where deptno=(select deptno from emp where ename='이승기');
--이씨가 근무하는 부서 삭제
delete from dept
where deptno = (select deptno from emp where ename like '이%')
*.Transaction
트랜잭션 개념 및 효과 정리해야 :
TCL : commit/rollbakck/savepoint
-- commit 트랜잭션 종료/시작
-- 50, '부서추가1' 추가 -----1
insert into dept
values(50, '부서추가1',null)
-- commit 트랜잭션 종료/시작
-- 60번 부서 지역을 서울 ----2
update dept
set loc='서울'
where deptno=60;
savepoint a1;
-- 50번부서 추가. -----3
insert into dept
values (70,'부서추가2',null);
savepoint a2;
-- 50번부서지역을 서울로 ------ 4
delete from dept where deptno=50;
savepoint a3;
========
1.DML문법 숙지
insert into 테이블명 () values ()
update 테이블명 set 컬럼='' where 조건.
delete 테이블명 where 조건.
2.트랜잭션 개념정리
트랜잭션의 일반적인 의미는 정보의 교환이나 데이터베이스 갱신 등
연관되는 작업들에 대한 일련의 연속을 의미하는데,
데이터베이스의 무결성이 보장되는 상태에서
요청된 작업을 완수하기 위한 작업의 기본 단위
트랜잭션이 성공적으로 끝나기 위해서는
각 작업 단계들이 모두 완성되어야만 하며,
그랬을경우 비로소 이 새로운 내용이
데이터베이스에 실제로 반영된다.
만약 그렇지 못했을 경우,
즉 어떤 한 작업 단계에서라도 오류가 발생하면
데이터베이스에는 아무런 수정이 이루어지지 않으며,
트랜잭션이 시작되기 이전 상태로 유지된다.
트랜잭션이 성공리에 끝났을때 이루어지는 데이터베이스의 갱신을
"commit" 이라고 부르며,
트랜잭션이 실패되었을때 데이터베이스의 수정 내용이 취소되는 것을
"rollback"이라고 부른다.
트랜잭션의 각 사건들을 관리 감독하는 프로그램을
트랜잭션 모니터라고 하며, 트랜잭션은 SQL에 의해 제공된다.
(ORACLE 에서는 savepoint라고 특정위치 정해줄수 있다.)