MySQL AUTO_INCREMENT의 시작 값은 어떻게 정해질까?
MySQL에서 AUTO_INCREMENT 속성은 레코드가 삽입될 때마다 자동으로 고유한 번호를 생성해 주는 기능입니다. 별도의 설정을 하지 않으면 기본적으로 1부터 시작합니다.
하지만 경우에 따라 1이 아닌 다른 숫자부터 번호를 매기고 싶을 수 있습니다. 이때는 두 가지 방법을 사용할 수 있습니다.
- 테이블 생성 시점에 시작 값을 지정하는 방법
- ALTER 명령어로 기존 테이블의 AUTO_INCREMENT 값을 변경하는 방법
아래 예제를 통해 실제 동작 과정을 살펴보겠습니다.
1단계: 테이블 생성하기
먼저 AUTO_INCREMENT 컬럼을 포함한 테이블을 생성합니다.
mysql> create table DemoTable
(
UniqueNumber int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(UniqueNumber)
);
Query OK, 0 rows affected (0.53 sec)2단계: 레코드 삽입 후 확인하기
INSERT 명령어로 여러 개의 레코드를 삽입해 보겠습니다.
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.30 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.26 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.08 sec)
SELECT 문으로 저장된 데이터를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다. 기본 설정대로 1부터 차례대로 번호가 부여된 것을 확인할 수 있습니다.
+--------------+ | UniqueNumber | +--------------+ | 1 | | 2 | | 3 | | 4 | +--------------+ 4 rows in set (0.00 sec)
3단계: ALTER 명령어로 시작 값 변경하기
AUTO_INCREMENT 시작 값을 다른 숫자로 변경하려면 아래와 같이 ALTER TABLE 문을 사용합니다. 여기서는 시작 값을 1000으로 설정해 보겠습니다.
mysql> alter table DemoTable AUTO_INCREMENT=1000; Query OK, 0 rows affected (0.18 sec) Records: 0 Duplicates: 0 Warnings: 0
4단계: 변경된 값 확인하기
설정 변경 후 새로운 레코드를 추가합니다.
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.12 sec)
다시 전체 데이터를 조회해 보면, 새로 삽입된 레코드들이 1000부터 시작하여 번호가 부여된 것을 확인할 수 있습니다.
+--------------+ | UniqueNumber | +--------------+ | 1 | | 2 | | 3 | | 4 | | 1000 | | 1001 | | 1002 | +--------------+ 7 rows in set (0.00 sec)
정리
MySQL의 AUTO_INCREMENT는 기본적으로 1부터 시작하지만, ALTER TABLE 테이블명 AUTO_INCREMENT=시작값; 구문을 사용하면 언제든지 원하는 숫자부터 번호를 부여하도록 변경할 수 있습니다. 이미 데이터가 존재하는 테이블에도 적용 가능하며, 이후 삽입되는 레코드부터 새로운 시작 값이 적용됩니다.