2 분 소요

DELETE 문은 데이터베이스 테이블에서 특정 조건에 맞는 레코드(데이터 행)를 삭제하는 SQL 명령어입니다. 실수로 잘못 사용하면 데이터가 모두 삭제될 수 있으므로 WHERE 절의 중요성을 반드시 이해하고 사용해야 합니다. 이 글에서는 DELETE 문의 기본 문법부터 실전 예제, DROP 문과의 차이점까지 자세히 설명드립니다.


1. DELETE 문 기본 문법

1.1. 특정 조건의 레코드 삭제

DELETE FROM 테이블이름
WHERE 조건;

예시

DELETE FROM Reservation
WHERE Name = '홍길동';
  • WHERE 절을 사용하여 조건에 맞는 레코드만 삭제합니다.

1.2. 모든 레코드 삭제 (주의 필요)

DELETE FROM 테이블이름;

예시

DELETE FROM Reservation;
  • 테이블 내의 모든 데이터가 삭제되며, 테이블 구조는 유지됩니다.

✅ 주의: WHERE 절 없이 DELETE를 실행하면 전체 데이터가 삭제됩니다.


2. DELETE 문 주요 특징

항목 설명
삭제 대상 특정 조건의 레코드 또는 전체 레코드
테이블 구조 유지됨
복구 가능성 일반적으로 복구 불가 (트랜잭션 사용 시 일부 복구 가능)
실행 속도 조건 비교가 포함되므로 TRUNCATEDROP보다 느릴 수 있음

3. DELETE 문 실전 예제

3.1. 특정 필드 조건으로 삭제

DELETE FROM Customer
WHERE Address = '서울';

서울에 거주하는 고객 데이터를 삭제합니다.

3.2. 다중 조건으로 삭제

DELETE FROM Customer
WHERE Age = 17 AND Name = '홍길동';

나이가 17세이고 이름이 ‘홍길동’인 고객을 삭제합니다.

3.3. 모든 데이터 삭제 (테이블 초기화 용도)

DELETE FROM Customer;

Customer 테이블의 모든 데이터를 삭제합니다.

⚠ 복구 불가하므로 실행 전 꼭 백업 여부 확인!


4. DELETE vs. DROP vs. TRUNCATE 차이점

항목 DELETE DROP TRUNCATE
삭제 대상 레코드(데이터 행) 테이블 전체 모든 레코드
테이블 구조 유지 O X O
복구 가능성 X (일반적으로 불가) X X
조건 삭제 가능 여부 O X X
속도 느림 (조건 검사) 빠름 매우 빠름

🔍 DELETE는 유연하지만 느리고, DROP은 구조까지 삭제하며, TRUNCATE는 빠르지만 조건 지정이 불가능합니다.


5. DELETE 문 실행 후 검증하기

DELETE 문을 사용한 후에는 SELECT 문으로 삭제 결과를 꼭 확인하세요.

SELECT * FROM Customer;

✅ 변경 사항을 확인하고 예상대로 삭제되었는지 검증하는 습관이 중요합니다.


6. 요약 정리

기능 문법 예시 설명
특정 데이터 삭제 DELETE FROM 테이블 WHERE 조건; 조건을 만족하는 레코드만 삭제
전체 데이터 삭제 DELETE FROM 테이블; 모든 데이터 삭제, 구조는 유지
테이블 자체 삭제 DROP TABLE 테이블; 테이블 + 데이터 모두 삭제
삭제 후 확인 SELECT * FROM 테이블; 삭제 결과 검토 필수

질문 정리

  1. DELETE 문으로 삭제한 데이터는 복구할 수 있나요?
    • 일반적으로 복구할 수 없습니다. 트랜잭션을 사용하면 복구가 가능할 수 있으나, 일반적인 환경에서는 백업이 없다면 복구는 어렵습니다.
  2. DELETE와 DROP 중 무엇을 사용해야 하나요?
    • 데이터만 삭제하고 구조를 유지하고 싶으면 DELETE를, 테이블 자체를 제거하고 싶다면 DROP을 사용하세요.
  3. TRUNCATE와 DELETE 중 어느 것이 더 빠른가요?
    • TRUNCATE가 훨씬 빠르며, 로그 기록이 적기 때문에 속도에서 우위를 가집니다. 단, 조건 삭제는 불가능합니다.
  4. DELETE에 WHERE 절을 빼먹었는데 복구가 가능한가요?
    • 일반적으로 불가능합니다. 실수 방지를 위해 항상 WHERE 절을 먼저 작성한 후 DELETE 문을 완성하는 습관을 들이세요.
  5. 삭제된 데이터 확인은 어떻게 하나요?
    • DELETE 후 SELECT 문으로 테이블을 조회하거나, 트랜잭션이 설정된 환경에서는 ROLLBACK으로 복원할 수 있습니다.

카테고리:

업데이트:

댓글남기기