DELETE 는 행만 지우고 되돌릴 수 있으며, TRUNCATE 는 전부 비우되 표는 남기고 되돌릴 수 없으며, DROP 은 표 자체를 없앤다.
왜 그런지까지
DELETE 는 DML 이라 로그를 남기고 COMMIT 전에는 ROLLBACK 으로 되돌릴 수 있다. 조건을 걸어 일부만 지울 수도 있다.
TRUNCATE 는 DDL 이라 자동 커밋되고, 조건을 걸 수 없으며 저장 공간까지 처음 상태로 되돌린다. DROP 은 표의 구조와 데이터, 인덱스까지 함께 없앤다. 셋 다 되돌릴 수 있는지, 표가 남는지, 조건을 걸 수 있는지로 갈린다.
세 가지 지우기
| 명령 | 갈래 | 표가 남는가 | 되돌릴 수 있는가 | 조건을 걸 수 있는가 |
|---|---|---|---|---|
| DELETE | DML | 남는다 | 된다 | 된다 |
| TRUNCATE | DDL | 남는다 | 안 된다 | 안 된다 |
| DROP | DDL | 없어진다 | 안 된다 | 안 된다 |
DELETE vs TRUNCATE
DELETE 는 DML 이라 조건을 걸 수 있고 ROLLBACK 으로 되돌릴 수 있지만, TRUNCATE 는 DDL 이라 전부 비우고 자동 커밋되어 되돌릴 수 없다.
TRUNCATE vs DROP
TRUNCATE 는 표의 구조를 남기고 내용만 비우지만, DROP 은 표 자체를 없앤다.
넣어 두면 오늘 · 1일 · 3일 · 7일 · 14일 · 30일 간격으로 다시 물어봅니다