MySQL에서 자동 증가(AUTO_INCREMENT) 값을 초기화하는 방법
MySQL에서 테이블의 AUTO_INCREMENT 값을 1부터 다시 시작하도록 설정하려면 TRUNCATE 명령어를 사용해 테이블을 비우면 됩니다. 먼저 예제 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY
);
Query OK, 0 rows affected (1.44 sec)INSERT 명령어를 사용해 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.35 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.30 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.06 sec)
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-----------+ | StudentId | +-----------+ | 1 | | 2 | | 3 | | 4 | +-----------+ 4 rows in set (0.00 sec)
AUTO_INCREMENT 값이 계속 이어지는 문제
이 상태에서 레코드를 추가로 삽입하면, AUTO_INCREMENT로 지정된 StudentId는 5부터 계속 이어지게 됩니다. 만약 번호를 다시 1부터 시작하고 싶다면, 먼저 테이블을 TRUNCATE 해야 합니다.
다음은 테이블을 비워서 자동 증가 값을 1부터 시작하도록 만드는 쿼리입니다.
mysql> truncate table DemoTable; Query OK, 0 rows affected (0.93 sec) mysql> select *from DemoTable; Empty set (0.00 sec)
테이블 초기화 후 데이터 재삽입
다시 INSERT 명령어로 레코드를 삽입합니다.
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.07 sec)
SELECT 문으로 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위에서 테이블을 TRUNCATE 했기 때문에, 아래 출력 결과와 같이 AUTO_INCREMENT 값이 1부터 다시 시작되는 것을 확인할 수 있습니다.
+-----------+ | StudentId | +-----------+ | 1 | | 2 | | 3 | +-----------+ 3 rows in set (0.00 sec)
참고: TRUNCATE와 DELETE의 차이점
TRUNCATE TABLE은 테이블의 모든 행을 삭제하면서 자동 증가 카운터까지 초기화합니다. 반면 DELETE FROM 테이블명;으로 전체 데이터를 삭제하더라도 InnoDB 엔진에서는 일반적으로 자동 증가 값이 유지되므로, 번호를 반드시 1부터 다시 시작해야 한다면 TRUNCATE를 사용하는 것이 확실합니다.