프로그래밍 언어/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';
반응형