MySQL에서 정수 시퀀스(integer sequence)를 생성하려면 AUTO_INCREMENT 속성을 사용해야 합니다. MySQL에는 오라클처럼 시퀀스를 전용으로 생성하는 별도의 명령어가 없기 때문에, AUTO_INCREMENT가 그 역할을 대신 수행합니다.
AUTO_INCREMENT의 기본 동작
AUTO_INCREMENT는 기본적으로 1부터 시작합니다. 만약 다른 숫자부터 시작하고 싶다면 ALTER 명령어를 통해 시작 값을 변경할 수 있습니다. 예를 들어 초기값을 1000으로 설정하면, 이후 생성되는 첫 번째 값은 1000 + 1 = 1001이 됩니다.
예제: 테이블 생성하기
다음은 AUTO_INCREMENT를 적용한 테이블을 생성하는 쿼리입니다.
mysql> create table AutoIncrementDemo
−> (
−> EmployeeId int AUTO_INCREMENT,
−> primary key(EmployeeId)
−> );
Query OK, 0 rows affected (0.54 sec)
EmployeeId 컬럼에 AUTO_INCREMENT를 지정했고, 기본 키(primary key)로 설정했습니다.
레코드 삽입으로 시퀀스 생성하기
값을 직접 입력하지 않고 레코드를 삽입하면 자동으로 정수 시퀀스가 생성됩니다. 쿼리는 다음과 같습니다.
mysql> insert into AutoIncrementDemo values();
Query OK, 1 row affected (0.13 sec)
mysql> insert into AutoIncrementDemo values();
Query OK, 1 row affected (0.27 sec)
mysql> insert into AutoIncrementDemo values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into AutoIncrementDemo values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into AutoIncrementDemo values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into AutoIncrementDemo values();
Query OK, 1 row affected (0.07 sec)
생성된 시퀀스 확인하기
SELECT 문을 사용하면 자동으로 생성된 정수 시퀀스를 확인할 수 있습니다.
mysql> select *from AutoIncrementDemo;
실행 결과는 다음과 같습니다.
+------------+
| EmployeeId |
+------------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+------------+
6 rows in set (0.00 sec)
시작 값 변경하기
시퀀스를 1이 아닌 다른 숫자부터 시작하려면 ALTER TABLE 명령어를 사용합니다. 예를 들어 1000부터 시작하게 하려면 다음과 같이 작성합니다.
mysql> alter table AutoIncrementDemo auto_increment = 1000;
이후 새로운 레코드를 삽입하면 EmployeeId 값은 1001부터 차례대로 증가합니다.