1) DELETE
- WHERE절을 사용하여 테이블에 있는 데이터를 하나하나 선택하여 제거하는 방식
- WHERE절을 사용하지않고 테이블의 모든 데이터를 삭제하더라도, 내부적으로는 한줄 한줄 일일히 제거하는 과정을 거침
- 처리속도가 늦고, 퍼포먼스에 좋지않은 영향을 줄 수 있음
- 원하는 데이터만 골라서 삭제할 때에는 DELETE 사용 / 전체 데이터 삭제할 때에는 TRUNCATE 사용
- 데이터를 삭제하더라도 데이터가 담겨있던 Storage는 Release 되지않는다.
- DELETE된 데이터는 COMMIT 명령어를 사용하기 전이라면, ROLLBACK 명령어를 통해 되돌릴 수 있음
DELETE FROM dbtable;
DELETE FROM dbtable WHERE {조건};
ROLLBACK;
COMMIT;
2) TRUNCATE
- 전체 데이터를 한번에 삭제하는 방식 ( <-> DELETE)
- 최초 생성되었을 당시의 Storage만 남기고, 데이터가 남겨있던 Storage는 Release 된다.
- TRUNCATE TABLE을 하면 CREATE TABLE을 한 직후의 상태와 같다.
- 자동 COMMIT이 되는 명령어이기 때문에, 이미 지운 데이터는 되돌릴 수 없다.
TRUNCATE TABLE dbtable;
3) DROP
- 테이블 자체를 완전히 날려버리는 방식 -> 처음부터 없었던 테이블처럼
- 테이블 자체가 모두 지워지며, 해당 테이블에 생성되어있던 모든 인덱스도 사라진다.
- 자동 COMMIT이 되는 명령어이기 때문에, 이미 지운 데이터는 되돌릴 수 없다.
- 오라클10g부터는 테이블이 삭제되는 것이 아니라 윈도우의 휴지통 개념처럼 잠시 삭제 -> 테이블 이름이 BIN$..로 변경됨
DROP TABLE dbtable;
DELETE | TRUNCATE | DROP | |
명령어 종류 | DML | DDL | DDL |
처리 속도 | 느림 | 빠름 | 빠름 |
COMMIT | 사용자가 직접 | 자동 | 자동 |
ROLLBACK 가능 여부 | commit 이전엔 가능 | 불가 | 불가 |
삭제 방식 | 데이터만 삭제 | 테이블을 create 상태로 되돌림 | 테이블까지 완전히 제거 |
출처 및 참고
https://lee-mandu.tistory.com/476
'Data > Oracle' 카테고리의 다른 글
오라클 에디션별 특징/주요 오라클 서비스 (0) | 2020.09.13 |
---|---|
[pl/sql] 변수, 상수, 매개변수, 함수, 프로시저의 명명법 (0) | 2020.07.31 |
[DataBase] DBMS의 개념 (0) | 2020.07.30 |
[SQL] 구조적 질의 언어 DDL / DML / DCL (0) | 2020.07.30 |
[Oracle] import / export 기능 (0) | 2020.07.27 |