본문 바로가기
국비 과정/Oracle DataBase

국비 - 0901 ( DELETE, MERGE, TRANSACTION )

by 코딩호야 2022. 9. 1.

ora_0901.txt
0.01MB

DELETE ( 삭제 )

형식
DELETE FROM 테이블명
WHERE 조건절

Q ] 근무지가 뉴욕인 사원들을 emp_02 에서 삭제하시요
A ]  DELETE from emp_02
    where deptno = (select deptno  from dept_02 where loc = 'NEW YORK');

 

MERGE ( 합병 ) : 테이블 합병

=> 구조가 같은 두 테이블을 하나의 테이블로 합하는 기능

기존 테이블에 자료가 존재하는 경우:
                              새로운 값으로 UPDATE(갱신)
자료가 존재하지 않는 경우 : 
                               새로운 행으로 INSERT(추가)


형식 

MERGE      INTO ( 변경할 테이블명)                - 값을 변경할 테이블을 선언한다.
                     USING( 값을 가져올 테이블명)     - 어디에서 값을 가져올지 명시해준다.
                     ON (조인 조건)                                  - 조인 조건을 명시해준다.
WHEN MATCHED THEN                                     - 매치되는 값들이 있을때에
                                 UPDATE SET                                     - 업데이트한다.
                                  컬럼 1 = 값 1,                                     - 컬럼1에 값1을 대치함.
                                   컬럼 2 = 값 2,
WHEN NOT MATCHED THEN                                        - 매치되는 값들이 없을때
                                   INSERT(컬럼1,컬럼2...)
                                   VALUES(값1,값2...)                                 - 새로운 값을 삽입

MERGE 사용 방법!!

MERGE          INTO emp_01 e
                        USING emp_03 m
ON(e.empno = m.empno)
WHEN MATCHED THEN
                      UPDATE SET
                                   e.ename = m.ename,
                                    e.job = m.job,
                                    e.mgr = m.mgr,
                                    e.hiredate = m.hiredate,
                                    e.sal = m.sal,
                                    e.comm = m.comm,
                                    e.deptno = m.deptno
                       WHEN NOT MATCHED THEN
                                      INSERT VALUES(m.empno,m.ename,m.job,m.mgr,
                                                          m.hiredate,m.sal,m.comm,m.deptno);

 

Transaction ( 트랜젝션 )

트렌젝션은 '하나의 논리적인 작업 단위로 수행되는 일련의 작업'
으로 정의한다 트렌젝션은 ACID 라고 불리는 특성이있다.


1.Atomicity(원자성) : 트렌젝션은 분리할수 없는 하나의 단위이다
작업이 모두 수행되거나 하나도 수행되지 않아야한다.
ALL Or Nothing

2.Consistency(일관성) : 트렌젝션에서 사용되는 모든 데이터는 일관되어야한다.

3.Isolation(격리성) : 현재 트렌젝션에 접근하고 있는 데이터는 다른 트렌젝션으로부터 격리되어야한다.
                   독립성                 ( 트렌젝션이 일어나면 완료되기전까지는 다른 트렌젝션이 참조할수 없다)

4.Durability(영속성) : 트렌젝션이 정상적으로 종료되면 그결과는 시스템 오류가 발생하더라도
              지속성,내구성                                                       시스템에 영구적으로 적용되어야한다.

 

트렌젝션 명령어

COMMIT : COMMIT 은 트렌젝션의 처음과 끝을 나타낸다.
즉 COMMIT ~ COMMIT 까지가 TRANSACTION 이다

ROLLBACK : ROLLBACK 은 트렌젝션을 취소하고난뒤 
   처음부터 다시 시작하거나 SAVEPOINT 부터 취소하고 
   다시 되돌리는 기능을 한다.

SAVEPOINT : 세이브 포인트는 현재까지의 트렌젝션을 특정이름으로 지정할때 사용한다.


COMMIT 명령어와 ROLLBACK 명령어의 장점

1.데이터 무결성이 보장됩니다.
2.영구적인 변경전에 데이터의 변경사항을 확인할수 있습니다.
3.논리적으로 연관된 작업을 그룹화 할수 있습니다.

 

COMMIT 

TRANSACTION (INSERT , UPDATE , DELETE) 작업내용을 실제 데이터베이스에 저장합니다.
이전 데이터가 완전히 업데이트 됩니다.
모든 사용자가 변경된 데이터의 결과를 볼수 있습니다.

ROLLBACK 

TRANSACTION (INSERT,UPDATE,DELETE) 작업내용을 취소합니다.
이전에 COMMIT 한 곳까지 만 복구합니다.

자동 COMMIT 과 ROLLBACK  명령어가 되는경우
sqlplus 가 정상종료 되었다면 자동 COMMIT 되지만 비정상 종료 되었다면 
자동 ROLLBACK 됩니다.

DDL 과 DCL 명령문이 수행된 경우 자동 COMMIT 됩니다.

정전이 방생하거나 컴퓨터 다운시 자동으로 ROLLBACK 됩니다.

 

SAVEPOINT 

현재의 트랜젝션을 작게 분할 할수 있다.
저장된 SABEPOINT 는 ROLLBACK TO SAVEPOINT 를 사용하여 표시한 SAVEPOINT 까지 롤백 가능하다.
여러개의 SQL 문 실행을 수반하는 Transaction 의 경우
사용자가 트렌젝션 중간단계에서 savepoint 를 지정할수 있다.

형식  

SAVEPOINT 포인트 이름;                           => 특정위치 지정
ROLLBACK TO 포인트 이름;                     => 특정 위치로 되돌리기