logo

삭제 명령과 자르기 명령의 차이점

DELETE와 TRUNCATE 명령의 차이점은 인터뷰 질문에서 가장 일반적인 부분입니다. 주로 데이터베이스에서 데이터를 삭제하는 데 사용됩니다. 이들 간의 주요 차이점은 delete 문은 테이블의 ID를 재설정하지 않고 데이터를 삭제하는 반면, truncate 명령은 특정 테이블의 ID를 재설정한다는 것입니다. . 이 기사에서는 DELETE 및 TRUNCATE 명령의 전체 개요와 주로 같은 의미로 사용되지만 완전히 다른 차이점에 대해 설명합니다.

삭제 및 자르기 명령

DELETE 명령이란 무엇입니까?

이것은 DML 또는 데이터 조작 명령 데이터베이스에 필요하지 않은 테이블의 레코드를 삭제하는 데 사용됩니다. 테이블에서 전체 행을 제거하고 삭제된 행 수를 생성합니다. 이 명령을 실행하려면 대상 테이블에 대한 삭제 권한이 필요합니다. 또한 다음을 사용하여 특정 기록을 필터링하고 삭제할 수 있습니다. 어디 테이블의 조항.

이 쿼리를 사용하여 삭제된 레코드를 복구할 수 없기 때문에 이 명령을 실행하기 전에 데이터베이스 백업이 있음을 명확히 합니다. 그러므로, 데이터베이스 백업 나중에 필요할 때마다 데이터를 복원할 수 있습니다.

다음 구문은 테이블에서 데이터를 제거하는 DELETE 명령을 설명합니다.

 DELETE FROM table_name WHERE condition; 

TRUNCATE 명령이란 무엇입니까?

truncate 문은 다음과 같습니다. DDL 또는 데이터 정의 언어 명령 테이블 구조를 제거하지 않고 테이블에서 전체 데이터를 제거하는 데 사용됩니다. 우리는 사용할 수 없습니다 어디 절을 사용하여 레코드 필터링이 불가능하도록 합니다. 이 명령을 실행한 후, 삭제된 데이터를 롤백할 수 없습니다. 이 작업을 수행하는 동안 로그가 유지되지 않기 때문입니다.

truncate 명령은 할당을 취소합니다. 행 대신 페이지 트랜잭션 로그의 행 대신 할당 취소 페이지에 대한 항목을 만듭니다. 이 명령은 행 대신 페이지를 잠급니다. 따라서 더 적은 수의 잠금과 리소스가 필요합니다. 테이블이 외래 키로 참조되거나 인덱싱된 뷰에 참여하는 경우에는 truncate 문을 사용할 수 없습니다.

노트북 키보드의 삽입 키는 어디에 있나요?

다음 구문은 테이블에서 데이터를 제거하는 TRUNCATE 명령을 설명합니다.

 TRUNCATE TABLE table_name; 

DELETE와 TRUNCATE의 주요 차이점

다음 사항은 삭제 명령과 자르기 명령의 차이점을 설명합니다.

  1. DELETE 문은 테이블에서 레코드의 일부 또는 전부를 제거하려는 경우에 사용되는 반면, TRUNCATE 문은 테이블에서 전체 행을 삭제하려는 경우에 사용됩니다.
  2. DELETE는 테이블 데이터만 수정하므로 DML 명령인 반면, TRUNCATE는 DDL 명령입니다.
  3. DELETE 명령은 WHERE 절을 사용하여 레코드/튜플을 필터링할 수 있습니다. 그러나 TRUNCATE 명령은 다음을 사용할 수 없습니다. 어디 절이므로 자르는 동안 행을 필터링할 수 없습니다.
  4. DELETE는 모두 활성화합니다. 트리거 삭제 불을 피울 테이블 위에. 그러나 자르기 작업은 개별 행에서 작동하지 않기 때문에 트리거가 실행되지 않습니다.
  5. DELETE는 테이블에서 처리된 순서대로 한 행씩 삭제를 수행합니다. 그러나 TRUNCATE는 테이블 전체 데이터를 한 번에 삭제하기 때문에 행이 아닌 데이터 페이지에서 작동합니다.
  6. DELETE 문은 레코드만 삭제하고 재설정하지는 않습니다. 테이블의 아이덴티티 , TRUNCATE는 특정 테이블의 ID를 재설정합니다.
  7. DELETE 명령은 삭제된 모든 행에 대해 잠금을 획득하므로 더 많은 잠금 및 데이터베이스 리소스가 필요합니다. 이와 대조적으로 TRUNCATE는 데이터 페이지를 삭제하기 전에 데이터 페이지에 대한 잠금을 획득합니다. 따라서 더 적은 수의 잠금과 리소스가 필요합니다.
  8. DELETE 문은 거래 로그 삭제된 각 행에 대해 TRUNCATE는 각 데이터 페이지에 대한 트랜잭션 로그를 기록합니다.
  9. TRUNCATE 명령은 더 빠르게 행 대신 데이터 페이지를 할당 취소하고 트랜잭션 로그에 행 대신 데이터 페이지를 기록하므로 DELETE 명령보다 좋습니다.
  10. TRUNCATE 명령을 사용하여 레코드를 삭제하면 다시 복구할 수 없습니다. 반대로 DELETE 작업에서 제거한 삭제된 데이터를 다시 복구할 수 있습니다.

DELETE와 TRUNCATE 비교 차트

다음 비교 차트에서는 주요 차이점을 빠르게 설명합니다.

비교 기준 삭제 자르기
정의 delete 문은 지정된 조건에 따라 기존 테이블에서 단일 또는 여러 레코드를 제거하는 데 사용됩니다. truncate 명령은 기존 테이블에서 전체 데이터를 제거하지만 테이블 자체는 제거하지 않습니다. 테이블 구조나 스키마를 유지합니다.
언어 DML(데이터 조작 언어) 명령입니다. DDL(데이터 정의 언어) 명령입니다.
어디 WHERE 절을 사용하여 테이블의 특정 행이나 데이터를 필터링할 수 있습니다. 테이블에서 레코드를 필터링하기 위해 WHERE 절을 사용하지 않습니다.
허가 이 명령을 사용하려면 DELETE 권한이 필요합니다. 이 명령을 사용하려면 ALTER 권한이 필요합니다.
일하고 있는 이 명령은 레코드를 하나씩 제거합니다. 이 명령은 레코드가 포함된 전체 데이터 페이지를 삭제합니다.
잠그다 삭제하기 전에 행을 잠급니다. 삭제하기 전에 데이터 페이지를 잠급니다.
테이블 ID 이 명령은 데이터만 삭제하므로 테이블 ID를 재설정하지 않습니다. 항상 테이블 ID를 재설정합니다.
거래 삭제된 각 기록에 대한 트랜잭션 로그를 유지합니다. 삭제된 각 데이터 페이지에 대한 트랜잭션 로그를 유지하지 않습니다.
속도 로그를 유지하기 때문에 속도가 느립니다. 트랜잭션 로그를 유지하지 않고 전체 데이터를 한 번에 삭제하므로 실행 속도가 빠릅니다.
방아쇠 이 명령은 테이블에 적용된 트리거를 활성화하여 실행되도록 할 수도 있습니다. 이 명령은 테이블에 적용된 트리거를 활성화하여 실행하지 않습니다.
복원하다 COMMIT 또는 ROLLBACK 문을 사용하여 삭제된 데이터를 복원할 수 있습니다. 이 명령을 실행한 후에는 삭제된 데이터를 복원할 수 없습니다.
인덱싱된 뷰 인덱싱된 뷰와 함께 사용할 수 있습니다. 인덱싱된 뷰에서는 사용할 수 없습니다.
공간 DELETE 문은 삭제된 각 행에 대한 로그를 유지 관리하기 때문에 truncate보다 더 많은 트랜잭션 공간을 차지합니다. TRUNCATE 문은 각 행 대신 전체 데이터 페이지에 대한 트랜잭션 로그를 유지 관리하므로 트랜잭션 공간을 덜 차지합니다.

결론

이번 글에서는 delete 문과 truncate 문을 비교했습니다. 우리는 테이블에서 레코드 삭제를 사용자 정의하려는 경우 DELETE 명령이 사용된다는 결론을 내렸습니다. 그리고 TRUNCATE 명령은 테이블에 어떤 레코드나 데이터도 남기고 싶지 않을 때, 즉 테이블을 비우고 싶을 때 사용됩니다.