Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL Server

SQL Server의 TRUNCATE TABLE 명령

TRUNCATE TABLE 문은 SQL Server의 테이블에서 모든 레코드를 삭제하는 데 사용됩니다. 이 명령은 DELETE 명령과 유사하지만 WHERE 절 없이 작동합니다.

SQL Server의 TRUNCATE TABLE 명령 구문

  TRUNCATE TABLE [ten _CSDL.] [ten_schema.] ten_bang 
[ WITH (PARTITIONS (so_phanvung
| so _phanvung TO so _p | so _phanvung TO so _p hanvung)];

변수 이름 또는 변수 값

ten_CSDL

그것은 당신에게 달려 있습니다. 지정된 경우 데이터베이스의 이름입니다.

ten_scheme

옵션. 테이블이 속한 스키마(스키마 또는 네임스페이스로 변환)의 이름입니다.

ten_bang

기록을 삭제하려는 테이블입니다.

WITH(PARTITIONS(so_phanvung | so _phanvung TO so _phanvung)

선택 사항이며 파티션 테이블에만 사용할 수 있습니다. 지정된 경우 so_phanvung은 이 테이블에서 삭제하려는 영역의 번호입니다. 여러 영역을 삭제하려면 쉼표를 사용하여 값 또는 숫자 파티션 값 범위를 구분합니다. 분할되지 않은 테이블과 함께 이 절을 사용하면 SQL Server에서 오류를 보고합니다. 이 기능은 일부 SQL Server 버전에서 사용할 수 없습니다.

참고

  1. 테이블의 모든 레코드를 삭제하면 모든 indentity 열의 카운터가 처음부터 반복됩니다.
  2. 외래 키가 참조하는 테이블의 모든 레코드를 삭제할 수 없습니다.
  3. 테이블의 전체 레코드를 삭제하기 전에 ALTER TABLE과 같은 우선순위를 가져야 합니다.

예:

SQL Server에서 데이터를 검색할 필요가 없다면 전체 레코드를 삭제하는 것이 가장 빠른 방법입니다. 테이블이 TRUNCATE인 경우 삭제된 행은 기록되지 않으므로 이전 작업으로 되돌릴 수 없습니다. TRUNCATE는 DROP 명령으로 테이블을 삭제하거나 CREATE로 새 테이블을 만드는 것보다 쉽습니다. 아래 예를 참조하십시오.

  TRUNCATE TABLE; 

이 예는 테이블의 모든 레코드를 삭제합니다.

위 명령어는 아래 DELETE 명령어와 동일합니다.

  DELETE FROM nhanvien; 

이 두 명령 모두 테이블의 모든 데이터를 삭제합니다. 차이점은 DELETE 명령을 사용하면 TRUNCATE를 유지하려는 경우 삭제하기 전에 작업으로 돌아갈 수 있다는 것입니다.

데이터베이스 이름으로 다른 예를 보겠습니다.

  TRUNCATE TABLE totn.danhba; 

이 예는 totn이라는 데이터베이스의 모든 목록 항목을 삭제합니다.

예:파티션 사용

1 또는 1 지역 레코드를 삭제하려면 WITH PARTITIONS 절과 함께 TRUNCATE TABLE 명령을 사용하십시오.

TRUNCATE TABLE nhanvien
WITH (PARTITIONS (1 ~ 5, 7));

이 예에서 테이블은 파티션 테이블이고 TRUNCATE TABLE 문은 이 테이블에서 1에서 5까지의 지역 레코드와 영역 7을 삭제합니다.

자주 묻는 질문

질문: SQL Server에서 TRUNCATE TABLE 명령을 실행한 후 데이터베이스를 이전 상태(롤백)로 백업할 수 있습니까?

답변: TRUNCATE TABLE 명령은 트랜잭션을 사용하여 롤백할 수 있습니다. 아래와 같은 예입니다.

  CREATE T ABLE bang_test (cot1 int); 


INSERT INTO bang_test VALUES (1);
INSERT INTO bang_test VALUES (2);

INSERT INTO bang_test VALUES (3);


-- Tạo chuyển tiếp
BEGIN TRAN;


-- Xóa bản ghi trong bảng
TRUNCATE TABLE dbo.bảng_test;


-- Rollback bảng đã xóa bản ghi
ROLLBACK;


SELECT * FROM bang_ test;

위의 SELECT 문은 아래 레코드의 결과를 반환합니다.

 cot1 
----------
1
2
3

따라서 데이터베이스 상태가 이전 상태로 복원되었으며 state_test에 3개의 레코드가 남아 있습니다.