AUTO_INCREMENT와 PRIMARY KEY는 함께 사용하는 것이 원칙입니다
결론부터 말씀드리면, 네, AUTO_INCREMENT 컬럼에는 PRIMARY KEY를 설정하는 것이 올바른 방법입니다. MySQL에서 AUTO_INCREMENT는 테이블에 새로운 행이 삽입될 때마다 자동으로 1씩 증가하는 고유한 숫자 값을 생성해 주는 기능입니다. 이 값은 각 레코드를 유일하게 식별하는 역할을 하기 때문에, 일반적으로 PRIMARY KEY로 지정하여 중복되지 않도록 관리하는 것이 권장됩니다.
1. 테이블 생성하기
먼저 AUTO_INCREMENT 컬럼에 PRIMARY KEY를 설정한 테이블을 생성해 보겠습니다.
mysql> create table DemoTable ( EmployeeId int NOT NULL AUTO_INCREMENT, EmployeeName varchar(40), EmployeeAge int, PRIMARY KEY(EmployeeId), UNIQUE KEY(EmployeeName, EmployeeAge) ); Query OK, 0 rows affected (0.96 sec)
위 예제에서 EmployeeId 컬럼은 NOT NULL, AUTO_INCREMENT, 그리고 PRIMARY KEY 속성을 모두 갖추고 있습니다. 또한 직원 이름과 나이 조합에 UNIQUE KEY를 걸어 동일한 데이터의 중복 입력까지 방지하고 있습니다.
2. 테이블 구조 확인하기
DESC 명령어로 테이블 구조를 확인해 보겠습니다.
mysql> desc DemoTable;
실행 결과는 다음과 같습니다.
+--------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+----------------+ | EmployeeId | int(11) | NO | PRI | NULL | auto_increment | | EmployeeName | varchar(40) | YES | MUL | NULL | | | EmployeeAge | int(11) | YES | | NULL | | +--------------+-------------+------+-----+---------+----------------+ 3 rows in set (0.17 sec)
출력 결과를 보면 EmployeeId 컬럼의 Key 값이 PRI(Primary Key)로 표시되고, Extra 항목에 auto_increment가 설정된 것을 확인할 수 있습니다.
3. 데이터 삽입하기
이제 INSERT 문을 사용하여 몇 개의 레코드를 추가해 보겠습니다. 이때 EmployeeId 값은 직접 지정하지 않아도 자동으로 증가하며 채워집니다.
mysql> insert into DemoTable(EmployeeName, EmployeeAge) values('Chris', 25);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(EmployeeName, EmployeeAge) values('Robert', 34);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(EmployeeName, EmployeeAge) values('Mike', 32);
Query OK, 1 row affected (0.09 sec)4. 전체 레코드 조회하기
SELECT 문으로 테이블의 모든 데이터를 확인해 보겠습니다.
mysql> select * from DemoTable;
실행 결과는 다음과 같습니다.
+------------+--------------+-------------+ | EmployeeId | EmployeeName | EmployeeAge | +------------+--------------+-------------+ | 1 | Chris | 25 | | 3 | Mike | 32 | | 2 | Robert | 34 | +------------+--------------+-------------+ 3 rows in set (0.00 sec)
정리
INSERT 시 ID를 별도로 지정하지 않았음에도 불구하고, 각 레코드에 1, 2, 3처럼 고유한 번호가 자동으로 부여된 것을 확인할 수 있습니다. 이처럼 AUTO_INCREMENT 컬럼을 PRIMARY KEY로 설정하면 다음과 같은 장점이 있습니다.
- 고유성 보장: 모든 레코드가 서로 다른 ID 값을 가지므로 중복이 발생하지 않습니다.
- 자동 관리: 새로운 행이 추가될 때마다 ID 값이 자동으로 증가하여 개발자가 직접 관리할 필요가 없습니다.
- 빠른 조회 성능: PRIMARY KEY는 클러스터형 인덱스로 작동하여 특정 레코드를 검색할 때 매우 빠른 성능을 제공합니다.
따라서 MySQL에서 AUTO_INCREMENT를 사용할 때는 해당 컬럼을 PRIMARY KEY로 함께 지정하는 것이 가장 안전하고 효율적인 설계 방식입니다.