FreeHand

[MySQL] DELETE 본문

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는 테이블의 전체 데이터를 삭제하고 테이블 구조는 남긴다.

 

'Database' 카테고리의 다른 글

[MySQL] 데이터 타입과 형 변환  (0) 2023.11.05
[MySQL] WITH절과 CTE  (0) 2023.11.05
[MySQL] UPDATE  (0) 2023.11.01
[MySQL] INSERT  (0) 2023.10.31
[MySQL] GROUP BY와 집계 함수  (0) 2023.10.30