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의 주요 차이점
다음 사항은 삭제 명령과 자르기 명령의 차이점을 설명합니다.
- DELETE 문은 테이블에서 레코드의 일부 또는 전부를 제거하려는 경우에 사용되는 반면, TRUNCATE 문은 테이블에서 전체 행을 삭제하려는 경우에 사용됩니다.
- DELETE는 테이블 데이터만 수정하므로 DML 명령인 반면, TRUNCATE는 DDL 명령입니다.
- DELETE 명령은 WHERE 절을 사용하여 레코드/튜플을 필터링할 수 있습니다. 그러나 TRUNCATE 명령은 다음을 사용할 수 없습니다. 어디 절이므로 자르는 동안 행을 필터링할 수 없습니다.
- DELETE는 모두 활성화합니다. 트리거 삭제 불을 피울 테이블 위에. 그러나 자르기 작업은 개별 행에서 작동하지 않기 때문에 트리거가 실행되지 않습니다.
- DELETE는 테이블에서 처리된 순서대로 한 행씩 삭제를 수행합니다. 그러나 TRUNCATE는 테이블 전체 데이터를 한 번에 삭제하기 때문에 행이 아닌 데이터 페이지에서 작동합니다.
- DELETE 문은 레코드만 삭제하고 재설정하지는 않습니다. 테이블의 아이덴티티 , TRUNCATE는 특정 테이블의 ID를 재설정합니다.
- DELETE 명령은 삭제된 모든 행에 대해 잠금을 획득하므로 더 많은 잠금 및 데이터베이스 리소스가 필요합니다. 이와 대조적으로 TRUNCATE는 데이터 페이지를 삭제하기 전에 데이터 페이지에 대한 잠금을 획득합니다. 따라서 더 적은 수의 잠금과 리소스가 필요합니다.
- DELETE 문은 거래 로그 삭제된 각 행에 대해 TRUNCATE는 각 데이터 페이지에 대한 트랜잭션 로그를 기록합니다.
- TRUNCATE 명령은 더 빠르게 행 대신 데이터 페이지를 할당 취소하고 트랜잭션 로그에 행 대신 데이터 페이지를 기록하므로 DELETE 명령보다 좋습니다.
- TRUNCATE 명령을 사용하여 레코드를 삭제하면 다시 복구할 수 없습니다. 반대로 DELETE 작업에서 제거한 삭제된 데이터를 다시 복구할 수 있습니다.
DELETE와 TRUNCATE 비교 차트
다음 비교 차트에서는 주요 차이점을 빠르게 설명합니다.
비교 기준 | 삭제 | 자르기 |
---|---|---|
정의 | delete 문은 지정된 조건에 따라 기존 테이블에서 단일 또는 여러 레코드를 제거하는 데 사용됩니다. | truncate 명령은 기존 테이블에서 전체 데이터를 제거하지만 테이블 자체는 제거하지 않습니다. 테이블 구조나 스키마를 유지합니다. |
언어 | DML(데이터 조작 언어) 명령입니다. | DDL(데이터 정의 언어) 명령입니다. |
어디 | WHERE 절을 사용하여 테이블의 특정 행이나 데이터를 필터링할 수 있습니다. | 테이블에서 레코드를 필터링하기 위해 WHERE 절을 사용하지 않습니다. |
허가 | 이 명령을 사용하려면 DELETE 권한이 필요합니다. | 이 명령을 사용하려면 ALTER 권한이 필요합니다. |
일하고 있는 | 이 명령은 레코드를 하나씩 제거합니다. | 이 명령은 레코드가 포함된 전체 데이터 페이지를 삭제합니다. |
잠그다 | 삭제하기 전에 행을 잠급니다. | 삭제하기 전에 데이터 페이지를 잠급니다. |
테이블 ID | 이 명령은 데이터만 삭제하므로 테이블 ID를 재설정하지 않습니다. | 항상 테이블 ID를 재설정합니다. |
거래 | 삭제된 각 기록에 대한 트랜잭션 로그를 유지합니다. | 삭제된 각 데이터 페이지에 대한 트랜잭션 로그를 유지하지 않습니다. |
속도 | 로그를 유지하기 때문에 속도가 느립니다. | 트랜잭션 로그를 유지하지 않고 전체 데이터를 한 번에 삭제하므로 실행 속도가 빠릅니다. |
방아쇠 | 이 명령은 테이블에 적용된 트리거를 활성화하여 실행되도록 할 수도 있습니다. | 이 명령은 테이블에 적용된 트리거를 활성화하여 실행하지 않습니다. |
복원하다 | COMMIT 또는 ROLLBACK 문을 사용하여 삭제된 데이터를 복원할 수 있습니다. | 이 명령을 실행한 후에는 삭제된 데이터를 복원할 수 없습니다. |
인덱싱된 뷰 | 인덱싱된 뷰와 함께 사용할 수 있습니다. | 인덱싱된 뷰에서는 사용할 수 없습니다. |
공간 | DELETE 문은 삭제된 각 행에 대한 로그를 유지 관리하기 때문에 truncate보다 더 많은 트랜잭션 공간을 차지합니다. | TRUNCATE 문은 각 행 대신 전체 데이터 페이지에 대한 트랜잭션 로그를 유지 관리하므로 트랜잭션 공간을 덜 차지합니다. |
결론
이번 글에서는 delete 문과 truncate 문을 비교했습니다. 우리는 테이블에서 레코드 삭제를 사용자 정의하려는 경우 DELETE 명령이 사용된다는 결론을 내렸습니다. 그리고 TRUNCATE 명령은 테이블에 어떤 레코드나 데이터도 남기고 싶지 않을 때, 즉 테이블을 비우고 싶을 때 사용됩니다.