DELETE 문
DELETE 문 (DELETE Statement)
DELETE 문은 테이블 이름으로 식별되는 테이블에서 행을 제거해요. WHERE 절이 없으면 테이블의 모든 레코드가 삭제돼요. WHERE 절이 제공되면 그 절이 참(true)으로 판정되는 행만 삭제돼요. 표현식이 거짓이거나 NULL인 행은 유지돼요.
출처: 문서
본문
Examples
조건 i = 2와 일치하는 행을 데이터베이스에서 제거하기:
DELETE FROM tbl WHERE i = 2;
테이블 tbl의 모든 행 삭제하기:
DELETE FROM tbl;
USING 절
USING 절은 다른 테이블이나 서브쿼리의 내용에 기반해 삭제할 수 있게 해줘요.
RETURNING 절
RETURNING 절은 삭제된 값을 반환할 수 있게 해줘요. DISTINCT 수정자가 지원되지 않는 것을 제외하고 SELECT 절과 같은 문법을 사용해요.
CREATE TABLE employees (name VARCHAR, age INTEGER);
INSERT INTO employees VALUES ('Kat', 32);
DELETE FROM employees RETURNING name, 2025 - age AS approx_birthyear;
| name | approx_birthyear |
|---|---|
| Kat | 1993 |
Syntax
TRUNCATE 문
TRUNCATE 문은 테이블에서 모든 행을 제거하며, WHERE 절 없는 DELETE FROM의 별칭으로 작동해요.
TRUNCATE tbl;
메모리와 디스크 공간 회수에 대한 제한
DELETE를 실행한다고 해서 공간이 회수되는 건 아니에요. 일반적으로 행은 삭제로 표시만 돼요. DuckDB는 [CHECKPOINT를 수행]({% link docs/current/sql/statements/checkpoint.md %})할 때 공간을 회수해요. [VACUUM]({% link docs/current/sql/statements/vacuum.md %})은 현재 공간을 회수하지 않아요.