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';
반응형
'백엔드 > DB' 카테고리의 다른 글
[MongoDB] MongoDB Aggregate() (0) | 2024.10.12 |
---|---|
[MongoDB] MongoDB compass 설치 (GUI) (0) | 2024.10.09 |
[Mysql] Docker 환경에서 mysql 설치 후 접속 에러 - Access denied for user 'root'@'172.17.0.1' (using password: YES) (0) | 2023.12.12 |
[MySQL/Intellij] Public key retrieval is not allowed 에러 해결 (0) | 2023.09.18 |
[SQL] MySQL 5.7버전과 8.0버전 차이점, 8.0 업그레이드 (0) | 2023.09.14 |