잘라내기(SQL)

Truncate (SQL)

SQL에서 이 문장은 테이블의 범위를 할당 해제(재사용을 위해 비워짐)로 표시하는 DDL(데이터 정의 언어) 작업이다.이 작업의 결과는 테이블에서 모든 데이터를 신속하게 제거하며, 일반적으로 다수의 무결성 집행 메커니즘을 우회한다.SQL:2008 표준에서 선택적 특징 F200인 "TRUNCATE TABLE 문"으로 공식적으로 도입되었다.null

TABECATE TABLE은 테이블에서 모든 행을 제거하지만 테이블 구조와 해당 열, 제약조건, 인덱스 등은 그대로 남아 있다.데이터 외에 테이블 정의를 제거하려면 DROP TABLE 문을 사용하십시오.null

TRUNCATE TABLE mytable문장은 논리적으로 (물리적으로는 아니지만) 와 동등하다.DELETE FROM mytable성명서(무료)WHERE절이다.다음과 같은 특징이 구별된다.TRUNCATE TABLE로부터DELETE:

  • Oracle Database,TRUNCATE암묵적으로 선행되고 커밋 작업이 뒤따른다.(Transactional Storage Engine을 사용하는 경우에도 MySQL에 해당될 수 있음)
  • 전형적으로TRUNCATE TABLE테이블에서 사용하는 데이터 페이지를 할당 해제하여 테이블의 모든 레코드를 신속하게 삭제하십시오.이렇게 하면 삭제 로깅에 따른 리소스 오버헤드와 획득한 잠금 수가 감소한다.이렇게 제거된 레코드는 롤백 작업에서 복원할 수 없다.이 규칙의 두 가지 주목할 만한 예외는 Postgre에서 발견된 구현이다.SQLMicrosoft SQL Server, 둘 다 허용TRUNCATE TABLE거래에서 커밋되거나 롤백될 문구.
  • 다음을 지정할 수 없음WHERE의 조항.TRUNCATE TABLE진술—전부 또는 전무.
  • TRUNCATE TABLE외부 키가 테이블이 잘릴 것을 참조할 때 사용할 수 없음.TRUNCATE TABLE진술은 방아쇠를 당기지 않는다.이로 인해 일관성 없는 데이터가 생성될 수 있음ON DELETE/ON UPDATE방아쇠는 발사되지 않는다.
  • 어떤 컴퓨터 시스템에서는TRUNCATE TABLEID 열의 개수를 ID의 시드로 재설정하십시오.
  • Microsoft SQL Server 2000 이상에서는 데이터베이스에 대한 모든 변경 사항이 기록되므로TRUNCATE TABLE문장은 로그 발송과 관련된 테이블에 사용될 수 있다.[1]
  • IBM Db2 지원TRUNCATE TABLE9.7 이상에

참조

  1. ^ "Description of the effects of nonlogged and minimally logged operations on transaction log backup and the restore process in SQL Server". Microsoft. December 2005.