본문 바로가기

Database

6. DML/TRANSACTION

DML(data manipulation language) : 데이터 조작어 

데이터를 조회(SELECT), 삭제(DELETE), 입력(INSERT), 변경(UPDATE)하여 데이터를 조작하는데 사용하는 SQL구문

 

1. INSERT

INSERT INTO 테이블이름(컬럼명1, 컬럼명2../모든 컬럼에 입력시 생략) VALUES(값1, 값2...)

2. UPDATE

-- 형식: 
UPDATE 테이블이름 SET 컬럼명 = 변경할 값 WHERE 조건;

-- 예시
UPDATE emp_table SET ename = 'John' WHRE ename = 'Joohn';

3. DELETE : 테이블의 행을 삭제

DELETE 테이블이름 WHERE 조건;

4. MARGE

: 조건에 따라 삽입, 갱신, 삭제 후 갱신 작업을 한번에 할 수 있는 구문

  해당 행이 존재한다면 UPDATE, 없는 행이라면 INSERT를 수행, 삽입/갱신에 대한 선택의 조건은 ON

 

 

 

TRANSACTION

1. Transaction이란?

- 데이터 처리의 논리적인 단위

- 오라클에서 발생하는 여러 SQL문을 하나의 논리적 단위로 처리

- 여러개의 작업을 하나의 논리적 단위로 묶어 반영과 원상복귀를 할 수 있도록 하게 사용.

   ex: A가 B에게 500만원을 송금하는 것을 하나의 단위로 묶음 (A계좌로부터 출금 -> B계좌로 입금)

- SQL 명령문의 일련의 과정 중 문제가 발생한다면 과정 전체를 취소하고 다시 처음부터 실행

2. 명령어

- SAVEPOINT: 현재의 트랜잭션을 작게 분할하여 표시한 곳 까지 ROLLBACK한다.

- ROLLBACK: 비정상적으로 처리했을 경우 되돌리기(COMMIT 지점까지만 복구)

- COMMIT: 정상적으로 진행되었다면 데이터에 최종적으로 저장(하나의 트랜잭션 과정 종료)

   → 트렌젝션을 사용하면 데이터의 부정합을 방지할 수 있다.

- COMMIT과 ROLLBACK 장점

: 데이터 무결성 보장, 영구적인 변경 전 데이터 변경사항 확인, 논리적으로 연관된 작업 그룹화

* AUTO COMMIT / AUTO ROLLBACK

: 사용자가 COMMIT과 ROLLBACK을 수행하지 않더라도 자동직으로 실행하는 경우

  - 프로그램이 비정상적으로 종료되면 AUTO ROLLBACK

  - DDL, DCL명령문 수행

  - 정전발생 혹은 컴퓨터 다운 시 AUTO ROLLBACK

-- 예제 
-- (tip)테스트용 테이블 만들기: 기존 테이블을 그대로 복사(제약조건은 가져오지 않음) 
-- CREATE TABLE 새로운테이블명 AS SELECT 컬럼명 or * FROM 기존테이블명;

--테스트용 테이블
CREATE TABLE test_table AS SELECT * FROM dept_table;


SAVEPOINT c1;
DELETE FROM test_table WHERE deptno = 10;
COMMIT;

SAVEPOINT c2;

DELETE FROM test_table WHERE deptno = 30;

SAVEPOINT c3;

DELETE FROM test_table WHERE deptno = 20;

SAVEPOINT c4;

DELETE FROM test_table WHERE deptno = 10;

ROLLBACK TO SAVEPOINT c4; ​  --→ 10번부서 테이블 DELETE 취소
ROLLBACK TO SAVEPOINT c3;    --→ 20번부서 테이블 DELETE 취소 
ROLLBACK TO SAVEPOINT c2;    --→ 30번부서 테이블 DELETE 취소 

-- 혹은 ​

ROLLBACK;   --→  10, 20, 30 테이블 DELETE 취소 

--그러나 

ROLLBACK TO SAVEPOINT c1;   --→ 불가능, COMMIT 이전으로는 돌아갈 수 없다.

'Database' 카테고리의 다른 글

8. 서브쿼리  (0) 2023.05.04
7. JOIN  (0) 2023.05.04
5. 단일함수/그룹함수/CASE문  (0) 2023.05.04
4. SQL언어의 종류 / SELECT / WHERE / 연산자  (0) 2023.05.04
3. 인덱스  (0) 2023.05.04