Database

DDL과 DML 및 Delete와 Truncate문 비교

천방지축 개발노트 2020. 9. 9. 21:37

Oracle에서 용도에 따른 SQL문의 분류 및 각종 특징들(Delete와 Truncate 등)에 대해 정리해보겠습니다.



명령어의 분류

DDL(데이터 정의어) : 테이블 생성과 조작. CREATE, ALTER, DROP, RENAME

DML(데이터 조작어) : 데이터의 조작. SELECT, INSERT, UPDATE, DELETE

DCL(데이터 제어어) : 유저를 생성하고 권한을 제어하는 명령어. GRANT, REVOKE

TCL(트랜잭션 제어어) : 트랜잭션(Transaction)을 제어하는 명령어.



Delete 와 Truncate 명령의 차이

 

Delete Table

Truncate Table

특징

1) 삭제된 데이터를 Log에 저장. 

→ 따라서 Rollback도 가능.


2) 원하는 특정 행(Row)를 지울 수 있음.

→ 테이블 데이터는 지워지지만 용량은 줄어들지 않는다, 인덱스도 그대로

1) 삭제된 데이터에 대한 Log에 저장 안함.

→ 따라서 상대적으로 시스템 부하는 적지만, Rollback 불가능. 절대 되돌릴 수 없음.


2) 특정 행(Row)를 지울 수 없음.→ 테이블 데이터 및 용량 줄어들고, 인덱스도 전부 삭제됨.



DDL과 DML 차이(COMMIT)

1) DDL명령어(CREATE, ALTER, RENAME, DROP)의 경우에는 직접 DB의 테이블에 영향을 미치기 때문에, 명령어를 입력하는 순간 작업이 즉시 완료(Auto Commit)된다.

2) DML명령어(INSERT, UPDATE, DELETE, SELECT)의 경우, 조작하려는 테이블을 메모리버퍼에 올려놓고 작업하기 때문에, 실시간으로 테이블에 영향을 미치는 것은 아님. 따라서 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 Commit 명령어를 입력해야 Transmition이 종료됨.