DELETE와 TRUNCATE는 MySQL에서 데이터를 삭제하는 데 사용되지만, 작동 방식, 속도, 복구 가능성 등에서 중요한 차이점이 있습니다.
DELETE FROM 테이블명 WHERE 조건;
employees 테이블에서 id가 5인 데이터를 삭제:
DELETE FROM employees WHERE id = 5;
테이블의 모든 데이터를 삭제:
DELETE FROM employees;
TRUNCATE TABLE 테이블명;
employees 테이블의 모든 데이터를 삭제:
TRUNCATE TABLE employees;
| 특징 | DELETE | TRUNCATE |
| 삭제 범위 | 특정 조건의 데이터 삭제 가능 (WHERE 사용). | 테이블의 모든 데이터 삭제. 조건 지정 불가. |
| 속도 | 느림 (행 단위 삭제). | 빠름 (테이블 전체를 즉시 초기화). |
| 로그 기록 | 각 행 삭제 작업이 트랜잭션 로그에 기록됨. | 트랜잭션 로그를 기록하지 않음. |
| 복구 가능성 | 트랜잭션 로그를 통해 복구 가능. | 복구 불가능. |
| 트리거(trigger) | 트리거 실행됨. | 트리거 실행되지 않음. |
| AUTO_INCREMENT | 값이 초기화되지 않음. | 값이 초기화됨. |
| 외래 키(Foreign Key) | 참조 무결성 제약 조건을 따름. | 외래 키 제약 조건을 무시할 수 없음. |
| 데이터 타입 int, bigint 차이 (0) | 2025.01.08 |
|---|---|
| 기존 데이터 백업 insert 쿼리 만드는 방법 (1) | 2024.12.07 |
| left join 과 left outer join 차이는? (2) | 2024.12.05 |
| MySQL SQL 오류코드 Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar (1) | 2024.12.05 |
| AND EXISTS (SELECT 1 FROM 테이블) 쿼리 조건 뜻? (0) | 2024.12.04 |