BigData&AI

[SQL] Truncate, Delete, Drop 차이비교/특징

히핑소 2023. 1. 5. 11:47
반응형

 

 구분 테이블 정의  저장공간  작업속도  Rollback SQL문 종류 
 DELETE 존재 유지 느림 가능 DML
 TRUNCATE 존재  반납 빠름 불가능  DDL
 DROP 삭제  반납  빠름 불가능  DDL

 

TRUNCATE

TRUNCATE TABLE 명령어는 개별적으로 행을 삭제할 수 없으며, 테이블 내부의 모든 행을 삭제합니다.

TRUNCATE TABLE 테이블명;

TRUNCATE TABLE [ { database_name.[ schema_name ]. | schema_name . } ] table_name [ ; ]

TRUNCATE의 특징

  • TRUNCATE는 DDL(데이터 정의 언어) 명령입니다.
  • TRUNCATE는 테이블 잠금을 사용하여 실행되지만, 각 행은 잠기지 않습니다.
  • TRUNCATE와 WHERE 절을 함께 사용할 수 없습니다.(개별적으로 행 삭제 불가능)
  • TRUNCATE는 테이블에서 모든 행을 제거합니다.
  • 트랜잭션 로그에 한 번만 기록되므로 DELETE보다 성능 면에서 더 빠릅니다.
  • 인덱싱 된 VIEW(뷰)와 함께 사용할 수 없습니다.
  • 테이블에서 TRUNCATE TABLE 명령어를 사용하려면 테이블에 대한 ALTER 권한이 필요합니다.
  • ROLLBACK(실행 취소) 불가능합니다.
  • 테이블의 용량이 초기화됩니다.

※ 잠금(Lock) : 삽입, 삭제, 갱신 등의 트랜잭션이 수행되는 동안 특정 테이블 또는 행에 대해 CRUD 작업을 할 수 없음을 의미합니다. 즉, TRUNCATE 명령어가 수행되는 동안 해당 테이블에 다른 트랜잭션 작업을 할 수 없습니다.

 

DELETE

DELETE 명령어는 테이블의 내부의 행을 모두 삭제하며, WHERE 절을 사용하여 개별적으로 행을 삭제할 수 있습니다.

DELETE FROM 테이블명 WHERE 조건;

[ WITH <common_table_expression> [ ,...n ] ]
 DELETE [ TOP ( expression ) [ PERCENT ] ] [ FROM ] { <object> | rowset_function_limited  [ WITH ( <table_hint_limited> [ ...n ] ) ] }
     [ <OUTPUT Clause> ]
     [ FROM <table_source> [ ,...n ] ]
     [ WHERE { <search_condition> | { [ CURRENT OF  { [ GLOBAL ] cursor_name }  | cursor_variable_name } ] } } ]
     [ OPTION ( <Query Hint> [ ,...n ] ) ] [; ]
 <object> ::=
 { [ server_name.database_name.schema_name. | database_name. [ schema_name ] .  | schema_name. ] table_or_view_name }

DELETE의 특징

  • DELETE는 DML(데이터 조작 언어) 명령입니다.
  • DELETE는 행 잠금을 사용하여 실행됩니다.
  • DELETE는 WHERE 절과 함께 사용하여 특정 행을 삭제할 수 있습니다.
  • DELETE는 삭제된 각 행에 대해 트랜잭션 로그를 기록합니다. 따라서 TRUNCATE보다 느립니다.
  • DELETE 명령어를 사용하려면 테이블에 대한 DELETE 권한이 필요합니다.
  • 인덱싱 된 VIEW(뷰)와 함께 사용할 수 있습니다.
  • TRUNCATE보다 더 많은 트랜잭션 공간을 사용합니다.
  • ROLLBACK(실행 취소)을 할 수 있습니다.
  • 테이블의 용량은 감소하지 않습니다.

DROP

기존 테이블의 존재를 모두 없애는 명령어로 테이블의 정의 자체를 완전히 삭제합니다
Rollback 은 불가능하며 테이블 용량도 감소 됩니다.

출처 : https://goddaehee.tistory.com/55, https://developer-talk.tistory.com/258

반응형