1. 데이터 조작어(DML)
- Data Manipulation Language
- 데이터 조회 및 변형을 위한 명령어
- select, update, insert, delete
- insert into 테이블명 values (값1, 값2, ..)
insert into 테이블명 (컬럼1, 컬럼2, ..)
values (값1, 값2, ..)
- update 테이블명 set 컬럼1 = 값1, 컬럼2 = 값2, ...
where 조건
- delete (from) 테이블명 where 조건;
2. Drop vs Truncate vs Delete
- Drop : 테이블 존재 자체가 삭제
- Truncate : 데이터만 통 삭제
-> 테이블이 삭제되는 명령어는 아니고 테이블 안에 들어있던 모든 레코드들을 제거하는 명령어이다.
-> 테이블을 Drop했다가 Create 한다.
-> 모든 행을 삭제하는 가장 빠르고 효율적인 방법
- Delete : 데이터 골라서 삭제
-> delete는 truncate처럼 테이블 구조는 남기고 안의 데이터만 삭제한다.
-> delete는 부분삭제 가능
-> 내부방식이 다르다. 한줄 한줄 삭제를 한다.
Drop | Truncate | delete |
---|
DDL | DDL | DML |
Rollback 불가능 | Rollback 불가능 | commit이전에 rollback가능 |
Auto Commit | Auto Commit | AutoCommit |
테이블 자체를 | 테이블을 최초 | 데이터만 삭제 |
완전히 삭제 | 생성된 초기 상태 | 로그 남음 |
로그 안남음 | | |
3. Commit, Rollback
3-1. Commit
- 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어이다.
- 트랜젝션의 처리 과정을 데이터베이스에 반영하기 위해서, 변경된 내용을 모두 영구 저장한다.
- Commit 수행하면, 하나의 트랜젝션 과정을 종료하게 된다.
- Transaction(Insert, Update, ..) 작업 내용을 실제 DB에 저장한다.
- 이전 데이터가 완전히 적용된다.
- 모든 사용자가 변경한 데이터의 결과를 볼 수 있다.
3-2. Rollback
- 작업 중 문제가 발생했을 때, 트랜젝션의 처리 과정에서 발생한 변경사항을 취소하고, 트랜잭션 과정을 종료시킨다.
- 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전의 상태로 되돌린다.
- Transaction(Insert, Update, Delete) 작업 내용을 취소한다.
- 이전 commit 한 곳까지만 복구한다.
- 트랜잭션 작업 중 하나라도 문제가 발생하면 모든 작업을 취소해야 하기때문에 하나의 논리적인 작업 단위로 구성해 놓아야 한다.
- 문제가 발생하면, 논리적인 작업 단위를 모두 취소해버리면 되기 때문이다.
3-3. commit, rollback 명령어의 장점
- 데이터 무결성이 보장된다.
- 논리적으로 연관된 작업을 그룹화할 수 있다.
3-4. 자동 rollback 되는 경우
3-5. 자동 commit 되는 경우
- create, alter, drop, truncate -> DDL문
- grant, revoke 권한 -> DCL문
- insert, update, delete 작업 후, commit하지 않고, 오라클을 정상 종료시에 commit 명령어를 입력하지 않아도 정상 commit 후 오라클 종료