개요
MySQL에서 테이블을 이미 생성한 후에 AUTO_INCREMENT(자동 증가) 속성을 추가해야 하는 경우가 종종 있습니다. 이때는 ALTER 명령어를 사용하면 됩니다. 이 글에서는 기존 테이블에 자동 증가 컬럼을 추가하는 전체 과정을 단계별로 살펴보겠습니다.
1단계: 테이블 생성하기
먼저 예제로 사용할 간단한 테이블을 생성합니다. 아래 테이블에는 학생 이름만 저장하는 컬럼이 하나 있으며, 아직 기본 키나 자동 증가 컬럼은 없습니다.
mysql> create table DemoTable
-> (
-> StudentName varchar(100)
-> );
Query OK, 0 rows affected (0.46 sec)
2단계: AUTO_INCREMENT 적용하기
기존 테이블에 AUTO_INCREMENT를 적용하려면 크게 세 가지 작업이 필요합니다.
① 새로운 컬럼 추가
먼저 정수(INT) 타입의 새 컬럼을 NOT NULL 제약 조건과 함께 추가합니다.
mysql> alter table DemoTable ADD COLUMN StudentId int NOT NULL;
Query OK, 0 rows affected (0.50 sec)
Records: 0 Duplicates: 0 Warnings: 0
② 기본 키(PRIMARY KEY) 설정
MySQL에서 AUTO_INCREMENT 컬럼은 반드시 키(Key)로 정의되어야 합니다. 따라서 해당 컬럼을 기본 키로 지정해 주어야 합니다.
mysql> alter table DemoTable ADD PRIMARY KEY(StudentId);
Query OK, 0 rows affected (1.23 sec)
Records: 0 Duplicates: 0 Warnings: 0
③ AUTO_INCREMENT 속성 부여
마지막으로 CHANGE 구문을 사용하여 해당 컬럼에 AUTO_INCREMENT 속성을 부여합니다.
mysql> alter table DemoTable CHANGE StudentId StudentId int NOT NULL
AUTO_INCREMENT;
Query OK, 0 rows affected (2.20 sec)
Records: 0 Duplicates: 0 Warnings: 0
참고: 기본 키 설정 단계를 생략하고 바로 AUTO_INCREMENT를 적용하면 오류가 발생합니다. 자동 증가 컬럼은 인덱스(일반적으로 기본 키)와 함께 선언되어야 한다는 점을 꼭 기억하세요.
3단계: 데이터 삽입 및 확인
INSERT 명령어로 몇 개의 레코드를 삽입해 보겠습니다. StudentId 값은 직접 지정하지 않아도 자동으로 1부터 차례대로 증가합니다.
mysql> insert into DemoTable(StudentName) values('Chris');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(StudentName) values('David');
Query OK, 1 row affected (0.15 sec)이제 SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
출력 결과
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------------+-----------+
| StudentName | StudentId |
+-------------+-----------+
| Chris | 1 |
| David | 2 |
+-------------+-----------+
2 rows in set (0.00 sec)
결과를 보면 StudentId 컬럼에 별도의 값을 지정하지 않았음에도 1, 2 순서로 자동 증가한 것을 확인할 수 있습니다. 이처럼 ALTER 명령어를 활용하면 이미 생성된 테이블에도 손쉽게 AUTO_INCREMENT를 적용할 수 있습니다.