Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 AUTO_INCREMENT 자동 증가 값을 1부터 다시 시작하도록 설정하는 방법

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를 사용하는 것이 확실합니다.