SQL Server에서 DELETE TOP 명령어는 테이블에서 레코드를 삭제할 때 사용하며, 지정한 값 또는 백분율에 따라 한 번에 삭제되는 레코드 수를 제한할 수 있는 기능을 제공합니다. 대량의 데이터 중 일부만 선택적으로 삭제해야 할 때 매우 유용하게 활용됩니다.
DELETE TOP 명령어 기본 문법
DELETE TOP (값) [PERCENT]
FROM 테이블명
[WHERE 조건];
주요 매개변수 설명
테이블명
삭제하고자 하는 레코드가 있는 테이블을 의미합니다.
WHERE 조건
선택 사항입니다. 삭제 대상 레코드가 반드시 충족해야 하는 조건을 지정합니다.
TOP (값)
결과 집합에서 첫 번째 행부터 지정한 값만큼의 행을 삭제합니다. 예를 들어 TOP(10)이라고 작성하면 조건을 만족하는 상위 10개 행이 삭제됩니다.
PERCENT
선택 사항입니다. PERCENT를 지정하면 결과 집합 전체 개수를 기준으로 지정한 백분율만큼의 첫 번째 행들이 삭제됩니다. 예를 들어 TOP(10) PERCENT는 결과 집합의 첫 10%에 해당하는 레코드를 삭제합니다.
주의 사항
DELETE 문에서는 모든 열을 나열할 필요가 없습니다. DELETE 명령은 열 단위가 아닌 행 단위로 동작하여 테이블의 레코드 전체를 삭제하기 때문입니다.
예제 1 - TOP 키워드 사용하기
DELETE TOP(10)
FROM nhanvien
WHERE ho = 'Anderson';
이 예제에서 DELETE TOP 명령은 직원 테이블(nhanvien)에서 성이 'Anderson'인 레코드 중 첫 10개를 삭제합니다. 만약 'Anderson'이라는 성을 가진 레코드가 10개보다 많다면, 나머지 레코드는 삭제되지 않고 그대로 남아 있게 됩니다.
예제 2 - TOP PERCENT 키워드 사용하기
DELETE TOP (25) PERCENT
FROM nhanvien
WHERE ten = 'Sarah';
이 예제에서는 이름이 'Sarah'인 레코드 중 첫 25%만 삭제됩니다. 즉, 조건을 만족하는 전체 레코드의 4분의 1만 제거되며, 나머지 75%의 레코드는 안전하게 보존됩니다.
DELETE TOP 명령어는 실수로 인한 대량 데이터 삭제를 방지하고, 배치 단위로 데이터를 나누어 삭제할 때 특히 유용합니다. 다만 삭제 작업은 되돌릴 수 없으므로, 실행 전 WHERE 조건을 신중히 검토하는 것이 좋습니다.