오라클 데이터 삭제(DELETE, TRUNCATE)
안녕하세요 jju_developer입니다.
오늘부터는 프로젝트를 진행하면서 실제로 많이 필요한 오라클 데이터를 삭제하는 쿼리문에 대해서 알아보겠습니다.
1. DELETE FROM 테이블명 WHERE 조건절;
프로젝트를 진행하다 보면,
여러 데이터들로 실험을 계속하는 작업을 하는데요.
이럴 때 너무 지저분해서 모든 데이터를 삭제하고 싶다!! 하면 Delete문을 사용하여 삭제해 줍니다.
※ Delete문 주의 사항
DELETE 명령문을 사용할 경우 WHERE 조건절을 생략하게 되면 테이블의 모든 행이 삭제됩니다.
그러므로 DELETE 명령문을 사용할 때 WHERE 조건절을 유의해야 합니다.
저는 모든 데이터를 깔끔히 삭제하고 싶어서 where 조건 없이 사용해 보겠습니다!
그런데 잠깐!!!!!!!!!!!! 사용하기 전에 TRUNCATE를 사용해도 되는 거 아닌가 하는 생각이 들었습니다.
<비교>
✅ DELETE : 테이블에서 데이터를 행 단위로 삭제
✅ DROP : 테이블의 형식과 모든 데이터 삭제
✅ TRUNCATE - 테이블의 모든 데이터만 삭제
Oracle 데이터베이스에서 TRUNCATE와 DELETE는 데이터를 삭제하는 두 가지 다른 방법입니다.
주요한 차이점은 다음과 같습니다:
2. TRUNCATE와 DELETE의 차이점
1. 동작 방식:
TRUNCATE:
TRUNCATE 문은 테이블에서 모든 행을 빠르게 삭제하는 데 사용됩니다.
이는 데이터를 한 번에 삭제하고 테이블 구조는 유지됩니다.
TRUNCATE 문은 테이블을 재사용할 수 있도록 할당된 공간을 해제하므로 롤백이 불가능합니다.
DELETE:
DELETE 문은 테이블에서 행을 선택적으로 삭제하는 데 사용됩니다.
조건에 맞는 행만 삭제되며, DELETE 문은 롤백할 수 있습니다. 삭제된 행이 로그에 저장되고 복구 가능합니다.
2. 속도:
TRUNCATE:
TRUNCATE 문은 테이블 전체를 삭제하므로 대량의 데이터를 빠르게 삭제하는 데 유리합니다.
트랜잭션 로그에 기록되지 않으며, 로그 기록의 부담이 적어 대용량 테이블에서 효율적입니다.
DELETE:
DELETE 문은 조건에 맞는 행을 개별적으로 삭제하므로 대량의 데이터를 처리할 때 TRUNCATE에 비해 상대적으로 느릴 수 있습니다. 또한, 트랜잭션 로그에 기록되어 복구 가능하도록 제공됩니다.
3. 사용에 대한 주의사항:
TRUNCATE:
TRUNCATE 문은 테이블의 모든 행을 삭제하므로 사용하기 전에 신중하게 고려해야 합니다.
데이터 손실이 발생하며, 삭제된 데이터를 복구할 수 없습니다.
DELETE:
DELETE 문은 조건에 맞는 행만 삭제하므로 데이터 손실을 최소화할 수 있습니다.
롤백 가능하므로 필요한 경우 삭제된 데이터를 복구할 수 있습니다.
4. 요약 :
요약하면,
TRUNCATE는 테이블 전체를 빠르게 삭제하고, DELETE는 조건에 맞는 행을 선택적으로 삭제합니다.
TRUNCATE는 롤백이 불가능하고 데이터 복구가 불가능하지만 빠르게 동작합니다.
DELETE는 롤백이 가능하고 데이터 복구가 가능하지만 상대적으로 느리게 동작할 수 있습니다.
데이터 삭제에 대한 요구 사항과 복구 가능성에 따라 적절한 방법을 선택해야 합니다.
자!
그렇다면 저는 여기서 TRUNCATE와 DELETE 중에서 무엇을 사용하였을까요?
바로바로바로
.
.
.
TRUNCATE를 사용하였습니다~~~~
딱히 롤백이 필요 없고 할당된 공간을 해제하고 싶었기 때문에 truncate를 사용하였습니다.

3. TRUNCATE TABLE 테이블명;
Table CUSTOMER이(가) 잘렸습니다.라는 로그를 확인하고
select * from customer; 를 확인해 보았습니다.
깔끔하게 정보가 삭제된 것을 볼 수 있죠?
이렇게 DELETE, TRUNCATE에 대해서 적용하는 법을 알아봤습니다.
수고하셨습니다.