MySQL에서 테이블의 AUTO_INCREMENT 값을 처음부터 다시 시작하도록 초기화하려면 TRUNCATE TABLE 명령어를 사용하면 됩니다. TRUNCATE는 테이블의 모든 데이터를 삭제할 뿐만 아니라 자동 증가 카운터도 1로 되돌려 줍니다.
TRUNCATE TABLE yourTableName;
단순히 DELETE문> 문으로 데이터를 삭제하는 것과 달리, TRUNCATE는 AUTO_INCREMENT 값까지 함께 초기화한다는 점이 핵심입니다.
1. 테스트용 테이블 생성
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.52 sec)Id 컬럼은 AUTO_INCREMENT 속성을 가지며 기본 키로 설정되어 있어, 데이터가 삽입될 때마다 1씩 자동으로 증가합니다.
2. 데이터 삽입 및 확인
INSERT 명령어로 여러 개의 레코드를 삽입해 보겠습니다.
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec)
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
출력 결과
+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | +----+ 4 rows in set (0.00 sec)
현재 Id 값이 1부터 4까지 순차적으로 증가한 것을 확인할 수 있습니다.
3. TRUNCATE로 AUTO_INCREMENT 초기화
이제 다음 쿼리를 실행하여 AUTO_INCREMENT를 초기화합니다.
mysql> truncate table DemoTable; Query OK, 0 rows affected (0.80 sec)
테이블이 비워졌으므로, 다시 레코드를 삽입하면 AUTO_INCREMENT는 기본값인 1부터 다시 시작됩니다.
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec)
다시 한번 전체 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+----+ | Id | +----+ | 1 | | 2 | +----+ 2 rows in set (0.00 sec)
정리
- TRUNCATE TABLE은 테이블의 모든 데이터를 삭제하고 AUTO_INCREMENT 값을 1로 초기화합니다.
- DELETE FROM은 데이터만 삭제하므로 AUTO_INCREMENT 값은 그대로 유지됩니다.
- TRUNCATE는 WHERE 조건을 사용할 수 없으며, 테이블 전체에만 적용됩니다.
테스트 환경에서 데이터를 정리하거나 ID를 새로 시작해야 하는 경우 TRUNCATE TABLE이 가장 간편한 방법입니다.