> 데이터 베이스 > MySQL 튜토리얼 > SQL의 TRUNCATE와 DELETE: 주요 차이점은 무엇입니까?

SQL의 TRUNCATE와 DELETE: 주요 차이점은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-15 09:17:44
원래의
150명이 탐색했습니다.

TRUNCATE vs. DELETE in SQL: What are the Key Differences?

SQL에서 TRUNCATE와 DELETE의 차이점에 대한 심층적인 이해

SQL의 TRUNCATE 및 DELETE 명령은 모두 테이블의 데이터를 삭제하는 데 사용되지만 일반적으로 TRUNCATE는 데이터를 더 빠르고 철저하게 삭제하는 방법이 다릅니다.

진술 유형

DML(Data Manipulation Language)인 DELETE와 달리 TRUNCATE는 DDL(Data Definition Language)에 속합니다.

커밋 및 롤백

명령 롤백 기능은 데이터베이스에 따라 다릅니다.

  • SQL Server 및 PostgreSQL: 둘 다 TRUNCATE 롤백을 허용합니다.
  • Oracle: DDL 작업인 TRUNCATE에는 두 개의 커밋이 포함되므로 되돌릴 수 없습니다. 그러나 Oracle의 Flashback 기능은 이 문제를 부분적으로 완화할 수 있습니다.

공간 재활용

DELETE는 여유 공간을 남기고 TRUNCATE는 여유 공간을 확보합니다. Oracle의 REUSE STORAGE 옵션을 사용하면 데이터 세그먼트를 보존할 수 있어 테이블을 다시 로드할 때 효율성이 향상됩니다.

행 범위

DELETE는 행을 선택적으로 삭제할 수 있는 반면, TRUNCATE는 모든 행을 무조건 삭제합니다. Oracle은 분할된 테이블에서 특정 파티션을 자르는 것을 허용합니다.

객체 유형

DELETE는 테이블과 클러스터링된 테이블에서 작동하지만 TRUNCATE는 테이블이나 전체 클러스터(Oracle에만 해당)로 제한됩니다.

데이터 객체 식별자

Oracle에서 DELETE는 데이터 개체 ID를 유지하는 반면, TRUNCATE는 테이블이 생성된 이후 삽입 작업이 발생하지 않는 한 새 ID를 할당합니다.

플래시백(Oracle)

DELETE는 Flashback 기능을 지원하지만 FLASHBACK ARCHIVE 기능을 사용하지 않는 한 TRUNCATE는 이를 차단합니다.

권한

DELETE 권한은 사용자에게 부여될 수 있지만 TRUNCATE에는 DROP ANY TABLE 권한이 필요합니다(Oracle에만 해당).

실적 노트

  • 다시 실행/실행 취소: DELETE는 많은 실행 취소 데이터를 생성하는 반면 TRUNCATE는 무시할 수 있는 공간을 차지합니다.
  • 인덱스: TRUNCATE는 비활성화된 인덱스를 복원합니다(Oracle에만 해당).
  • 외래 키: 외래 키가 테이블을 참조하는 경우 TRUNCATE가 금지되며 DELETE 동작은 구성에 따라 다릅니다.
  • 테이블 잠금: TRUNCATE에는 배타적 잠금(Oracle 전용)이 필요하고 DELETE에는 공유 잠금이 선호됩니다.

트리거 및 원격 실행

TRUNCATE는 DDL 트리거를 지원합니다(Oracle 전용). Oracle은 원격 TRUNCATE 실행을 허용하지 않습니다.

ID 열

SQL Server에서 TRUNCATE는 ID 열 순서를 재설정하지만 DELETE는 그렇지 않습니다.

결과 세트

Oracle PL/SQL에서 DELETE 문은 삭제된 행을 클라이언트에 반환할 수 있습니다.

위 내용은 SQL의 TRUNCATE와 DELETE: 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿