MySQL에서 기존 컬럼에 AUTO_INCREMENT 추가하기
MySQL에서 이미 생성된 테이블의 특정 컬럼에 AUTO_INCREMENT 속성을 추가하려면 ALTER TABLE 명령을 사용하면 됩니다.
기본 문법
ALTER TABLE yourTableName CHANGE yourColumnName yourColumnName dataType AUTO_INCREMENT PRIMARY KEY;
위 문법에서 주목할 점은 CHANGE 절 뒤에 컬럼 이름을 두 번 작성한다는 것입니다. 첫 번째는 기존 컬럼 이름, 두 번째는 변경할 새 컬럼 이름입니다. 이름을 그대로 유지하고 싶다면 동일한 이름을 두 번 입력하면 됩니다.
예제 테이블 생성
개념을 이해하기 위해 컬럼이 하나뿐인 간단한 테이블을 먼저 만들어 보겠습니다.
mysql> create table AlterTableToAddAutoIncrement -> ( -> StudentId int -> ); Query OK, 0 rows affected (0.57 sec)
'StudentId'라는 int 타입의 컬럼 하나만 가진 테이블이 생성되었습니다.
AUTO_INCREMENT 속성 적용
이제 위에서 소개한 문법을 사용해 'StudentId' 컬럼에 AUTO_INCREMENT와 기본 키(PRIMARY KEY)를 함께 설정해 보겠습니다.
mysql> alter table AlterTableToAddAutoIncrement change StudentId StudentId int AUTO_INCREMENT Primary key; Query OK, 0 rows affected (1.93 sec) Records: 0 Duplicates: 0 Warnings: 0
쿼리가 성공적으로 실행되어 'StudentId' 컬럼에 AUTO_INCREMENT 속성이 추가되었습니다.
참고: MySQL에서 AUTO_INCREMENT를 설정하려면 해당 컬럼이 반드시 키(Primary Key 또는 Unique Key)여야 합니다. 따라서 위 예제처럼 PRIMARY KEY를 함께 지정하는 것이 일반적입니다.
AUTO_INCREMENT 동작 확인
속성이 제대로 적용되었는지 확인하려면 값을 지정하지 않고 레코드를 삽입해 보면 됩니다. AUTO_INCREMENT가 정상 작동한다면 값이 자동으로 순차적으로 증가합니다.
mysql> insert into AlterTableToAddAutoIncrement values(); Query OK, 1 row affected (0.16 sec) mysql> insert into AlterTableToAddAutoIncrement values(); Query OK, 1 row affected (0.16 sec) mysql> insert into AlterTableToAddAutoIncrement values(); Query OK, 1 row affected (0.33 sec)
세 개의 레코드를 아무 값 없이 삽입했습니다. 이제 전체 데이터를 조회해 결과를 확인해 보겠습니다.
mysql> select * from AlterTableToAddAutoIncrement;
실행 결과는 다음과 같습니다.
+-----------+ | StudentId | +-----------+ | 1 | | 2 | | 3 | +-----------+ 3 rows in set (0.00 sec)
값을 직접 입력하지 않았음에도 StudentId가 1, 2, 3으로 자동 증가한 것을 확인할 수 있습니다. 이것으로 ALTER TABLE 명령을 통해 기존 컬럼에 AUTO_INCREMENT가 성공적으로 추가된 것입니다.