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
절이 빠졌을 경우 테이블 전체 데이터가 삭제될 수 있으므로 주의해야 합니다.