WeniVooks

검색

SQL 베이스캠프

DELETE

DELETE 문은 테이블에서 특정 행을 삭제할 때 사용하는 SQL 구문입니다. DELETE를 사용하면 조건에 맞는 데이터를 삭제할 수 있습니다.

1. 기본 DELETE 사용법

DELETE 문은 특정 조건을 만족하는 행을 삭제합니다. 기본 구문은 다음과 같습니다.

DELETE FROM 테이블명
WHERE 조건;
DELETE FROM 테이블명
WHERE 조건;

다음 예시는 상품ID가 1인 상품을 삭제하는 구문입니다.

DELETE FROM 상품
WHERE 상품ID = 1;
-- SELECT * FROM 상품;
DELETE FROM 상품
WHERE 상품ID = 1;
-- SELECT * FROM 상품;
실습환경 바로가기

이 쿼리는 상품ID가 1인 상품을 삭제합니다. WHERE 절을 사용하지 않으면 테이블의 모든 행이 삭제되므로 매우 주의해야 합니다.

2. 조건 없이 DELETE 사용 (주의)

WHERE 절을 생략하고 DELETE 문을 실행하면 테이블의 모든 데이터가 삭제됩니다. 다음 쿼리는 상품 테이블의 모든 데이터를 삭제하는 예시입니다.

DELETE FROM 상품;
DELETE FROM 상품;

이 쿼리는 상품 테이블의 모든 데이터를 삭제하므로, 실수로 실행되지 않도록 주의해야 합니다. 우리 과정에서도 해당 코드는 실습하지 않습니다. 만약 실행하였다면 홈페이지를 다시 로드하여 데이터를 복구할 수 있습니다.

3. 여러 테이블에서의 DELETE

DELETE 문을 사용할 때 하위 쿼리나 조인을 통해 다른 테이블의 조건을 기반으로 삭제할 수 있습니다. 다음 예시는 가격이 10,000원 미만인 상품을 삭제하는 구문입니다.

DELETE FROM 상품
WHERE 상품ID IN (
    SELECT 상품ID
    FROM 상품
    WHERE 가격 < 10000
);
-- SELECT * FROM 상품;
DELETE FROM 상품
WHERE 상품ID IN (
    SELECT 상품ID
    FROM 상품
    WHERE 가격 < 10000
);
-- SELECT * FROM 상품;

4. DELETE와 트랜잭션

대규모 데이터 삭제는 트랜잭션을 사용하여 실행할 수 있습니다. 트랜잭션은 데이터를 안전하게 유지하는 방법으로, 중간에 문제가 발생하면 롤백할 수 있습니다. 위니북스에서는 작동하지 않습니다.

BEGIN TRANSACTION;
 
DELETE FROM 상품
WHERE 가격 < 10000;
 
COMMIT;
-- SELECT * FROM 상품;
BEGIN TRANSACTION;
 
DELETE FROM 상품
WHERE 가격 < 10000;
 
COMMIT;
-- SELECT * FROM 상품;

이 쿼리는 가격이 10,000원 미만인 상품을 삭제하는 트랜잭션 예시입니다. 삭제 작업이 완료되면 COMMIT을 통해 변경 사항이 적용되며, 중간에 문제가 생기면 ROLLBACK을 사용하여 원래 상태로 되돌릴 수 있습니다.

되돌리는 방법은 다음과 같습니다.

ROLLBACK;
ROLLBACK;

DELETE 문을 사용할 때는 항상 삭제할 데이터를 신중하게 선택하고, 특히 WHERE 절이 빠졌을 경우 테이블 전체 데이터가 삭제될 수 있으므로 주의해야 합니다.

2.14 UPDATE2.16 LIMIT