데이터 싹 지우고 다시 시작할 때, DELETE와 TRUNCATE 뭐가 다를까?
들어가며
개발을 하다 보면 어느 순간 이런 상황이 생긴다.
“이 데이터 그냥 다 지우고 처음부터 다시 수집할까?”
특히 외부 API에서 데이터를 수집하는 프로젝트라면 이런 일이 생각보다 자주 발생한다. 처음에는 데이터를 열심히 쌓았는데, 나중에 확인해 보니 매핑이 잘못되어 있거나 일부 데이터가 엉뚱한 값으로 들어가 있는 경우가 있다.
나도 이번에 비슷한 상황을 만났다.
테이블에 데이터가 수만 건 들어가 있었는데, 확인해 보니 처음부터 다시 수집하는 편이 오히려 깔끔하겠다는 판단이 들었다.
그런데 막상 SQL을 입력하려고 하니 아주 기본적인 부분에서 잠깐 멈추게 된다.
“DELETE였나? TRUNCATE였나?”
오랜만에 SQL을 만지면 이런 게 은근히 헷갈린다.
그래서 이번 기회에 데이터를 삭제할 때 DELETE, TRUNCATE, DROP의 차이를 간단하게 정리해 본다.
DELETE api_team_mapping;는 SQL 문법이 아닙니다. 테이블 전체 데이터를 지우려면 다음처럼 합니다.
가장 간단한 방법
DELETE FROM api_team_mapping;
전체 데이터가 삭제됩니다.
또는 전체 데이터를 비우는 목적이라면
TRUNCATE TABLE api_team_mapping;
저라면 지금 상황에서는 TRUNCATE를 추천합니다.
차이
| 명령 | 의미 |
|---|---|
DELETE FROM ... | 행을 하나씩 삭제 |
TRUNCATE TABLE ... | 테이블 전체를 빠르게 비움 |
DROP TABLE ... | 테이블 자체를 삭제 |
우리는 테이블 구조는 그대로 두고 데이터만 새로 수집할 것이므로 DROP은 하지 않습니다.
따라서 지금은
TRUNCATE TABLE api_team_mapping;
하면 됩니다.
단, 실행 전에 현재 데이터가 정말 필요 없는지 확인하고 실행하세요.
데이터 삭제 전에 꼭 확인할 것
SQL 한 줄은 짧지만 실행하기 전에 몇 가지는 확인하는 것이 좋다.
첫 번째는 정말 전체 데이터를 삭제해도 되는가?
두 번째는 테이블 구조까지 삭제하려는 것은 아닌가?
세 번째는 다시 데이터를 수집할 수 있는가?
네 번째는 현재 데이터가 백업되어 있는가?
특히 운영 DB라면 바로 TRUNCATE를 실행하는 것보다 백업부터 하는 것이 좋다.
개발 DB라 하더라도 중요한 데이터가 있다면 한 번쯤 확인하는 습관이 필요하다.
데이터가 잘못 들어갔다면 무조건 수정할 필요는 없다
개발하다 보면 잘못 들어간 데이터를 하나하나 수정하고 싶은 마음이 생긴다.
하지만 데이터 자체가 잘못 수집된 것이라면 이야기가 달라진다.
예를 들어 2만 건이 넘는 데이터가 있는데 수집 로직 자체가 잘못되었다면, 기존 데이터를 계속 수정하는 것보다
잘못된 데이터 초기화
↓
수집 로직 수정
↓
정상적인 원본 데이터 재수집
↓
검증
순서로 진행하는 것이 훨씬 깔끔할 수 있다.
특히 매핑 테이블은 더욱 그렇다.
잘못된 매핑이 이미 수천 건 들어갔다면 일부만 고치는 것보다 매핑 기준을 바로잡고 새로 구축하는 것이 장기적으로 관리하기 편하다.
마무리
DB 데이터를 삭제하는 SQL은 어렵지 않다.
하지만 중요한 것은 명령어 자체보다 무엇을 삭제하려는지 정확하게 구분하는 것이다.
다시 한번 정리하면 다음과 같다.
DELETE FROM 테이블명;
→ 테이블의 데이터를 삭제한다.
TRUNCATE TABLE 테이블명;
→ 테이블의 데이터를 전체 초기화한다.
DROP TABLE 테이블명;
→ 테이블 자체를 삭제한다.
홍TV



![Eclipse에서 갑자기 "[m2e] Lifecycle Mapping" 오류? Maven 프로젝트가 빨간 줄 뜨는 이유 4 Eclipse에서 갑자기 [m2e] Lifecycle Mapping 오류? Maven 프로젝트가 빨간 줄 뜨는 진짜 이유](https://hongtv.co.kr/wp-content/uploads/2026/09/62edeb0f-aaf8-42cc-af31-1a91e54bc187-300x200.png)
댓글 0
첫 댓글을 남겨보세요.