수색…


소개

TRUNCATE 문은 테이블에서 모든 데이터를 삭제합니다. 이는 필터가없는 DELETE와 유사하지만 데이터베이스 소프트웨어에 따라 특정 제한 사항과 최적화가 있습니다.

통사론

  • TRUNCATE TABLE table_name;

비고

TRUNCATE는 DDL (Data Definition Language) 명령이므로 DELETE (데이터 조작 언어, DML, 명령)와는 큰 차이가 있습니다. TRUNCATE는 데이터베이스에서 많은 양의 레코드를 신속하게 제거하는 수단이 될 수 있지만 TRUNCATE 명령을 사용하는 것이 특정 상황에 적합한 지 결정하기 위해서는 이러한 차이를 이해해야합니다.

  • TRUNCATE는 데이터 페이지 조작입니다. 따라서 TRUNCATE 조작을 수행 할 때 테이블과 연관된 DML 트리거 (ON DELETE)는 실행되지 않습니다. 이렇게하면 방대한 삭제 작업에 많은 시간을 절약 할 수 있지만 관련 데이터를 수동으로 삭제해야 할 수 있습니다.
  • TRUNCATE는 삭제 된 행에 의해 사용 된 디스크 공간을 해제하고, DELETE는 공간을 해제합니다.
  • 잘릴 테이블이 ID 열 (MS SQL Server)을 사용하면 시드는 TRUNCATE 명령으로 재설정됩니다. 이로 인해 참조 무결성 문제가 발생할 수 있습니다.
  • 보안 역할과 사용중인 SQL의 변형에 따라 TRUNCATE 명령을 수행하는 데 필요한 권한이 없을 수도 있습니다

Employee 테이블에서 모든 행 제거

TRUNCATE TABLE Employee;

truncate table을 사용하면 모든 인덱스와 트리거를 무시하고 모든 것을 제거하기 때문에 DELETE TABLE을 사용하는 것이 더 좋습니다.

테이블 삭제는 행 기반 작업이므로 각 행이 삭제됩니다. 테이블 자르기는 전체 데이터 페이지가 재 할당되는 데이터 페이지 조작입니다. 백만 행이있는 테이블이 있으면 delete table 문을 사용하는 것보다 테이블을 잘라내는 것이 훨씬 빠릅니다.

DELETE로 특정 행을 삭제할 수 있지만 특정 행을 TRUNCATE 할 수는 없지만 모든 레코드를 한 번에 TRUNCATE 할 수 있습니다. 모든 행을 삭제 한 다음 새 레코드를 삽입하면 이전에 삽입 된 값에서 자동 증가 기본 키 값이 계속 추가됩니다. 이때 자동 증가 기본 키 값도 재설정되고 1에서 시작됩니다.

테이블을 자르면 외래 키가 없어야하며 , 그렇지 않으면 오류가 발생합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow