Database

[MySQL] DELETE

Jinn 2023. 11. 1. 20:34

DELETE문 기본 구조

DELETE FROM 테이블 WHERE 조건

 

WHERE절을 생략하면 모든 행의 데이터가 삭제된다.

 

test 테이블

 

test 테이블에서 '로제'를 삭제하려면 다음과 같이 할 수 있다.

DELETE FROM test WHERE userName = '로제';

마지막 행의 '로제'가 테이블에서 삭제되었다.

 

 

데이터를 삭제하는 방법은 DELETE, DROP, TRUNCATE문으로 크게 3가지가 있다.

CREATE TABLE ex1 (SELECT * FROM employees.employees);
CREATE TABLE ex2 (SELECT * FROM employees.employees);
CREATE TABLE ex3 (SELECT * FROM employees.employees);

 대략 30만 건이 있는 employees 테이블을 복사해서 3개의 테이블을 만들었다.

 

DELETE FROM ex1;
DROP TABLE ex2;
TRUNCATE TABLE ex3;

DELETE를 사용했을 때만 시간이 오래 걸리는 것을 확인할 수 있다.

 

DML인 DELETE는 트랜잭션 로그를 기록하는 작업 때문에 오래 걸린다.

반면 DDL인 DROP과 TRUNCATE는 트랜잭션을 발생시키지 않아 빠르다.

 

DROP은 테이블 자체를 삭제하지만 TRUNCATE는 테이블의 전체 데이터를 삭제하고 테이블 구조는 남긴다.