[SQL] DELETE, MERGE, Transaction

정은아·2022년 9월 13일
0

. DELETE(삭제) (DELETE명령은 COMMIT되지 않는다

: DELETE FROM 테이블명
WHERE 조건절

.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 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 (트랜젝션)

  : 데이터베이스에서 트렌젝션이란 데이터 처리의 한 단위를 말한다

    오라클에서 발생하는 여러개의 SQL 명령문을 하나의
작업 단위로 처리하는데 이를 트렌젝션이라고 한다.

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

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

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

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

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


. 트렌젝션 명령어

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

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

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


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


. COMMIT

. TRANSACTION (INSERT, UPDATE, DELETE) 작업내용을
		실제 데이터베이스에 저장합니다.

. 이전 데이터가 완전히 업데이트 됩니다.
. 모든 사용자가 변경된 데이터의 결과를 볼 수 있습니다.


. ROLLBACK

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


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

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

  . 정전이 발생하거나 컴퓨터 다운시 자동으로 ROLLBACK 됩니다.
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글