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

MySQL에서 기본 키(Primary Key) 재설정하는 방법 - TRUNCATE와 ALTER TABLE 활용법

MySQL 기본 키 재설정 개요

MySQL에서 AUTO_INCREMENT로 설정된 기본 키 값을 초기화하려면 TRUNCATE 문으로 테이블을 비운 뒤, ALTER TABLE 문으로 자동 증가 시작값을 1로 지정하면 됩니다. 이 방법은 테스트 데이터를 반복적으로 생성할 때 특히 유용합니다.


1단계: 테이블 생성하기

먼저 AUTO_INCREMENT 속성을 가진 기본 키가 포함된 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1929
    (
    UserId int NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(UserId)
    );
Query OK, 0 rows affected (0.00 sec)

2단계: 샘플 데이터 삽입하기

INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 추가합니다. UserId 컬럼은 자동 증가되므로 값을 명시하지 않아도 됩니다.

mysql> insert into DemoTable1929 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1929 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1929 values();
Query OK, 1 row affected (0.00 sec)

3단계: 현재 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1929;

실행 결과는 다음과 같습니다. UserId가 1부터 3까지 순차적으로 증가한 것을 확인할 수 있습니다.

+--------+
| UserId |
+--------+
|      1 |
|      2 |
|      3 |
+--------+
3 rows in set (0.00 sec)

4단계: 기본 키 값 재설정하기

이제 핵심 단계입니다. 먼저 TRUNCATE TABLE로 테이블의 모든 데이터를 삭제하고, 이어서 ALTER TABLE로 AUTO_INCREMENT 시작값을 1로 설정합니다.

mysql> truncate table DemoTable1929;
Query OK, 0 rows affected (0.00 sec)
mysql> alter table DemoTable1929 auto_increment=1;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
참고: DELETE 문 대신 TRUNCATE를 사용하는 이유는, TRUNCATE는 테이블 전체를 빠르게 초기화하면서 AUTO_INCREMENT 카운터도 함께 리셋하기 때문입니다. DELETE로 데이터를 삭제하면 자동 증가 값은 그대로 유지됩니다.

5단계: 재설정 확인하기

기본 키가 1부터 다시 시작되는지 확인하기 위해 새 레코드를 삽입해 보겠습니다.

mysql> insert into DemoTable1929 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1929 values();
Query OK, 1 row affected (0.00 sec)

다시 SELECT 문으로 전체 레코드를 조회합니다.

mysql> select * from DemoTable1929;

결과를 보면 UserId가 이전처럼 4부터 시작하는 것이 아니라, 1부터 새롭게 증가하는 것을 확인할 수 있습니다.

+--------+
| UserId |
+--------+
|      1 |
|      2 |
+--------+
2 rows in set (0.00 sec)

마무리 정리

MySQL에서 기본 키(AUTO_INCREMENT) 값을 재설정하는 절차는 다음 두 단계로 요약할 수 있습니다.

TRUNCATE TABLE 테이블명; — 테이블 데이터 전체 삭제 및 카운터 초기화
ALTER TABLE 테이블명 auto_increment=1; — 자동 증가 시작값을 1로 명시적 지정

이후 데이터를 삽입하면 기본 키가 1부터 다시 순차적으로 부여됩니다. 단, TRUNCATE는 복구가 불가능하므로 운영 환경에서는 신중하게 사용해야 합니다.