프로그래밍 언어/DB

[Mysql] 데이터 삭제하기 & AUTO INCREMENT 초기화 - DELETE, TRUNCATE, DROP

작은소행성 2024. 8. 1. 20:51

 

mysql 에서 데이터를 삭제하는 방법은 세가지 정도가 있다. 

  • DELETE : WHERE 절에 조건을 걸고 데이터 삭제, 테이블 유지
  • TRUNCATE : WHERE절을 사용하지 않고 모든 데이터 삭제
  • DROP : 데이터 삭제 & 테이블 삭제 

 

DELETE

DELETE 에서 WHERE 절이 없이 사용하면 모든 데이터가 삭제 되기 때문에 주의한다. 

name 이 test 인 데이터 행 삭제

-- DELETE FROM 테이블명 WHERE 조건;
DELETE FROM member WHERE name = 'test';

 

 

DROP

member 테이블 자체가 삭제된다.

-- DROP TABLE 테이블명
DROP TABLE member;

 

 

 

TRUNCATE

테이블은 그대로고 데이터만 삭제된다. 

Auto increment 도 초기화된다. 

-- TRUNCATE TABLE 테이블명
TRUNCATE TABLE member;

 

 

TRUNCATE 로 테이블의 데이터 삭제를 하면 auto increment 가 자동으로 초기화 되야하는데

간혹가다가 안되는 것들이 있었다 . 

그런 경우에 수동으로 auto increment 를 초기화 시킨다. 

-- 인덱스값 초기화
ALTER TABLE member AUTO_INCREMENT = 1;

 

 

위의 명령어를 사용했는데도 인덱스 초기화가 되지 않아서 

ANALYZE TABLE 명령어를 사용했다. 

ANALYZE TABLE 명령어는 테이블에 대한 통계를 업데이트하고 테이블의 인덱스를 다시 계산한다. 

테이블을 분석하고 메타데이터를 갱신하면서 AUTO_INCREMENT 설정이 반영된 것이다. 

-- 인덱스값 초기화
ALTER TABLE member AUTO_INCREMENT = 1; 
ANALYZE TABLE member  ;

-- 인덱스값 확인     
SELECT AUTO_INCREMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'test'
AND TABLE_NAME = 'member';

 

 

반응형