본문 바로가기

DataBase/Oracle

Oracle(4) - DML, 트랜잭션

DataBase에서 DML(데이터 조작어)는 테이블에 있는 내용을 추가, 수정, 삭제하기 위한 언어이다.
추가하기 위한 INSERT, 수정하기위한 UPDATE, 삭제하기위한 DELETE문으로 이루어져있다.

1. 테이블에 새로운 행을 추가하기위한 INSERT 문

  • 특정 컬럼에만 데이터를 삽입하는 경우
    ex) INSERT INTO(COLUMN_NAME, COLUMN_NAME) TABLE_NAME VALUES(DATA, DATA);
  • 모든 컬럼에 데이터를 삽입하는 경우
    ex) INSERT INTO TABLE_NAME VALUES(DATA, DATA.....);
  • 문자와, 날짜값을 삽입할 때는 ' ' 따옴표를 사용해야한다.

2. 테이블의 내용을 수정하기위한 UPDATE 문

  • UPDATE문을 사용할 때는 WHERE조건절을 이용해서 어떤행이 변경될 것인지를 명시해야한다. 만약 명시하지않으면 모든절이변경된다. ex) UPDATE TABLE_NAME SET COLUMN_NAME = 변경값 WHERE = 조건
  • 두개이상의 컬럼을 변경하고싶을 때는 콤마(,)로구분해서 변경할 수 있다.
    ex) UPDATE TABLE_NAME SET COLUMN1 = 변경값, COLUMN2 = 변경값 WHERE = 조건

3. 테이블에 불필요한 행을 삭제하기 위한 DELETE 문

  • DELETE FROM TABLE_NAME WHERE = 조건 형식으로 삭제시킬 수 있다.
  • 조건을 지정하지않으면 테이블의 모든 행이 삭제된다.(롤백데이터 남음 != TRUNCATE)

4. 트랜잭션

데이터베이스에서 데이터를 처리하는 하나의 논리적인 작업단위를 트랜잭션이라고 한다. 트랜잭션의 도입이유는 데이터의 일관성을 유지하고 안정적으로 데이터를 복구시키기 위해서이다. 예를들어 A씨의 계좌에서 돈이 인출이되고 B씨의 계좌에 돈이 입금이 되어야하는 과정중 A씨의 돈은 인출이 되었는데 B씨의 계좌에 입금전에 오류가 발생했다면 A씨 돈이 인출된 과정도 취소가 되어야한다. 이런것이 트랜잭션이다.

5. COMMIT과 ROLLBACK

데이터가 변경되고 그것을 영구히 저장(확정)하는 것이 COMMIT(커밋)이고, 작업 중 문제가 생겨서 트랜잭션의 처리 과정에서 발생한 변경 사항을 모두 취소하고 마지막 COMMIT지점으로 돌리는 것이 ROLLBACK(롤백)이다. 여러개의 DML명령어들은 하나의 논리적인 단위인 트랜잭션으로 구성된다. 여러 DML을 하나로 묶는 기준은 마지막 커밋시점부터, 새로운 커밋을 하는 시점까지이다. DDL과 DCL명령어가 시행되면 자동으로 COMMIT된다.

EX) COMMIT -> 1 -> 2 -> COMMIT -> 3 -> 4 -> 5 -> ROLLBACK

위와같이 ROLLBACK을 시행하면 2작업을 완료한 이후로 ROLLBACK된다.

6. SAVEPOINT

ROLLBACK시 COMMIT지점까지 되돌리지 않고 저장한 지점까지만 돌리고 싶을 때는 SAVEPOINT를 사용한다.
SAVEPOINT 적용방법은 작업을 완료한 이후 SAVEPOINT 별칭 으로 지정한다.

EX) COMMIT -> 1 -> C1(SAVEPOINT) -> 2 -> 3 -> C2(SAVEPOINT) -> 4 -> 5 -> ROLLBACK C2;

위와같이 ROLLBACK을 시행하면 C2지점인 3작업을 완료한 직후로 돌아갈 수 있다.

'DataBase > Oracle' 카테고리의 다른 글

Oracle(6) - JOIN  (0) 2019.04.17
Oracle(5) - 무결성제약조건  (0) 2019.04.17
Oracle(3) - DDL  (0) 2019.04.16
Oracle(2) - SQL함수  (0) 2019.04.15
Oracle(1) - SQL기본  (0) 2019.04.12