DELETE, TRUNCATE, DROP 차이
DELETE
- 테이블에서 특정 조건에 맞는 행(row)의 데이터를 삭제하는 명령어
- 조건을 지정하지 않으면 모든 행 삭제 (내부적으로 한 행씩 삭제해서 느림)
- Commit이전에는 Rollback이 가능함
- 데이터가 저장된 공간은 반환되지 않음
- DML(Data Manipulation Language)언어
DELETE FROM 테이블명 WHERE 컬럼명 = '값';
DELETE FROM 테이블명;
TRUNCATE
- 테이블의 모든 데이터를 삭제하고 AUTO_INCREMENT 값도 초기화
- 데이터가 저장된 공간은 반환
- Rollback 불가
DELETE 보다 빠름
- DDL(Data Definition Language)언어
TRUNCATE TABLE 테이블명;
DROP
- 테이블, 뷰, 데이터베이스 등의 구조와 데이터를 완전히 삭제하는 명령어
- Rollback 불가
- 테이블과 관련된 인덱스, 제약 조건(Foreign Key), 권한도 함께 삭제
- 데이터가 저장된 공간은 반환
- DDL(Data Definition Language) 언어
DROP TABLE 테이블명;
DROP DATABASE 데이터베이스명;
비교
| 구분 | DELETE | TRUNCATE | DROP |
|---|
| 목적 | 특정 조건의 데이터 삭제 | 테이블의 모든 데이터 삭제 | 테이블 또는 데이터베이스 삭제 |
| 조건 사용 | 가능 (WHERE 사용) | 불가능 | 불가능 |
| 속도 | 느림 (한 행씩 삭제) | 빠름 | 매우 빠름 |
| 공간 반환 | 반환되지 않음 | 반환 | 반환 |
| AUTO_INCREMENT | 유지 | 초기화 | 삭제 |
| ROLLBACK | 가능 | 불가능 | 불가능 |
| 테이블 구조 | 유지 | 유지 | 삭제 |
| 사용 유형 | DML | DDL | DDL |