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

MySQL 테이블 생성 시 AUTO_INCREMENT 설정을 잊었다면? ALTER TABLE로 나중에 추가하는 방법

결론부터 말씀드리면, 테이블을 만든 후에도 AUTO_INCREMENT를 설정할 수 있습니다. MySQL의 ALTER TABLE 문을 사용하면 됩니다. 이 글에서는 AUTO_INCREMENT 설정을 잊은 상황을 가정하고, 이를 나중에 추가하고 정상적으로 동작하는지까지 단계별로 확인해 보겠습니다.

1단계: AUTO_INCREMENT 없이 테이블 생성하기

먼저 AUTO_INCREMENT를 설정하지 않은 상태로 테이블을 생성해 보겠습니다. 아래 예제에서는 StudentId와 StudentName 두 개의 컬럼만 가진 테이블을 만듭니다.

mysql> create table forgetToSetAutoIncrementDemo
    -> (
    -> StudentId int,
    -> StudentName varchar(30)
    -> );
Query OK, 0 rows affected (1.17 sec)

2단계: 테이블 구조 확인하기

DESC 명령으로 테이블 구조를 살펴보면, StudentId 컬럼에 auto_increment 속성이 없는 것을 확인할 수 있습니다.

mysql> desc forgetToSetAutoIncrementDemo;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| StudentId   | int(11)     | YES  |     | NULL    |       |
| StudentName | varchar(30) | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

3단계: ALTER TABLE로 AUTO_INCREMENT 추가하기

이제 ALTER TABLE ... MODIFY COLUMN 문을 사용해 StudentId 컬럼에 AUTO_INCREMENT와 PRIMARY KEY를 한 번에 설정합니다.

mysql> alter table forgetToSetAutoIncrementDemo modify column StudentId int NOT NULL
AUTO_INCREMENT PRIMARY KEY;
Query OK, 0 rows affected (2.12 sec)
Records: 0 Duplicates: 0 Warnings: 0

참고: AUTO_INCREMENT로 지정하려는 컬럼은 반드시 NOT NULL이어야 하며, 인덱스(일반적으로 기본 키)로 설정해야 합니다. 위 쿼리처럼 하나의 문장에서 세 가지 조건을 모두 처리하는 것이 가장 깔끔한 방법입니다.

4단계: 변경된 테이블 구조 확인하기

다시 테이블 구조를 조회하면 auto_increment 속성이 성공적으로 추가된 것을 볼 수 있습니다.

mysql> desc forgetToSetAutoIncrementDemo;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| StudentId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| StudentName | varchar(30) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

Extra 열에 auto_increment가, Key 열에 PRI(기본 키)가 표시되는 것을 확인할 수 있습니다.

5단계: 데이터 삽입으로 자동 증가 검증하기

이제 StudentName 값만 지정하여 레코드를 여러 개 삽입해 보겠습니다. StudentId는 직접 입력하지 않아도 자동으로 값이 할당됩니다.

mysql> insert into forgetToSetAutoIncrementDemo(StudentName) values('Larry');
Query OK, 1 row affected (0.16 sec)

mysql> insert into forgetToSetAutoIncrementDemo(StudentName) values('Chris');
Query OK, 1 row affected (0.13 sec)

mysql> insert into forgetToSetAutoIncrementDemo(StudentName) values('Robert');
Query OK, 1 row affected (0.17 sec)

6단계: 전체 데이터 조회하기

SELECT 문으로 저장된 모든 레코드를 조회해 보겠습니다.

mysql> select * from forgetToSetAutoIncrementDemo;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Larry       |
| 2         | Chris       |
| 3         | Robert      |
+-----------+-------------+
3 rows in set (0.00 sec)

StudentId가 별도의 입력 없이 1, 2, 3으로 순차적으로 자동 증가한 것을 확인할 수 있습니다.

마무리 정리

테이블 생성 시 AUTO_INCREMENT를 빠뜨렸더라도 걱정할 필요가 없습니다. ALTER TABLE 문과 MODIFY COLUMN 절을 활용하면 기존 테이블의 컬럼에 언제든지 NOT NULL, AUTO_INCREMENT, PRIMARY KEY 속성을 추가할 수 있습니다. 다만 이미 중복된 값이나 NULL 값이 들어 있는 컬럼이라면 속성 변경 전에 데이터 정리가 먼저 필요하다는 점을 기억해 두세요.