본문 바로가기
DEV

[ORACLE] TRUNCATE, DELETE 차이점?

by 아노앤유노 2023. 7. 12.
반응형

oracle
truncate
delete
sql

 

TRUNCATE, DELETE 차이점?

Oracle에서 TRUNCATE와 DELETE는 데이터베이스에서 테이블의 행을 제거하는 데 사용되는 두 가지 명령문입니다.

그러나 두 명령문은 목적과 동작 방식에서 차이가 있습니다.

  • TRUNCATE
    TRUNCATE 문은 테이블에서 모든 행을 삭제합니다. 이 명령문은 로그 기록을 생성하지 않으며 트랜잭션 로그를 사용하지 않습니다. 따라서 테이블을 비우는 데 매우 효과적입니다. TRUNCATE를 사용하면 테이블의 구조는 그대로 유지되지만 모든 데이터가 삭제됩니다.

특징

  1. TRUNCATE는 로그를 생성하지 않으므로 롤백이 불가능합니다. 즉, 행을 삭제한 후에는 되돌릴 수 없습니다. TRUNCATE로 삭제된 데이터는 복구할 수 없습니다.
  2. TRUNCATE는 테이블을 비우는 작업이므로 행을 삭제하는 데 걸리는 시간이 DELETE보다 빠릅니다. 특히 대량의 데이터를 삭제할 때 성능이 우수합니다.
  3. TRUNCATE는 테이블의 시퀀스 값을 재설정합니다. 따라서 테이블을 다시 채우면 시퀀스 값이 초기화됩니다.
TRUNCATE TABLE [table_name];

 

  • DELETE:
    DELETE 문은 테이블에서 특정 조건을 충족하는 행을 삭제합니다. 이 명령문은 행을 삭제하기 전에 트랜잭션 로그를 생성하므로 롤백이 가능합니다. DELETE를 사용하면 테이블의 구조와 제약 조건은 그대로 유지되지만 지정한 조건에 맞는 행만 삭제됩니다.

DELETE FROM my_table WHERE [조건];

특징

  • DELETE는 로그를 생성하여 롤백이 가능합니다. 따라서 삭제 작업을 되돌릴 수 있습니다.
  • DELETE는 테이블의 행을 개별적으로 삭제하기 때문에 대량의 데이터를 삭제할 때에는 TRUNCATE보다 느릴 수 있습니다.
  • DELETE는 테이블의 시퀀스 값을 변경하지 않습니다. 따라서 행을 삭제한 후에도 시퀀스 값이 유지됩니다.

 

TRUNCATE는 테이블 전체를 비우고 로그를 생성하지 않으며 롤백이 불가능한 반면, DELETE는 조건에 맞는 개별 행을 삭제하고 롤백이 가능합니다. TRUNCATE는 대량의 데이터를 빠르게 삭제하는 데 적합하며, DELETE는 조건에 따라 행을 삭제할 때 유용하므로, 상황에 맞게 적절히 사용하면 된다.

반응형

'DEV' 카테고리의 다른 글

[JAVA] JAVA의 역사  (0) 2023.07.19
[ORACLE SQL] Oracle version check / 버전 확인  (0) 2023.07.18
[ORACLE] DATE 타입 조회 쿼리 TO_CHAR  (0) 2023.07.11
[ORACLE] LEFT JOIN, OUTER JOIN, FULL JOIN  (0) 2023.07.10
[C++] 포인터 pointer 란?  (0) 2023.07.06