MySQL의 AUTO_INCREMENT, SQL Server IDENTITY의 대응 기능
Microsoft SQL Server의 IDENTITY 열에 해당하는 MySQL의 기능은 바로 AUTO_INCREMENT입니다. SQL Server의 IDENTITY가 자동으로 숫자를 증가시키듯, MySQL의 AUTO_INCREMENT도 동일한 역할을 수행합니다.
기본 문법
MySQL에서 AUTO_INCREMENT 열을 가진 테이블을 생성하는 기본 문법은 다음과 같습니다.
CREATE TABLE yourTableName
(
yourColumnName1 dataType NOT NULL AUTO_INCREMENT,
yourColumnName2 dataType,
.
.
.
N,
PRIMARY KEY(yourColumnName1)
);주의: 기본 키(Primary Key)는 필수입니다
MySQL에서는 AUTO_INCREMENT로 지정된 열이 반드시 기본 키로 정의되어야 합니다. 그렇지 않으면 오류가 발생합니다. 아래 예제를 통해 확인해 보겠습니다.
mysql> create table EquivalentOfIdentityInMySQL
-> (
-> ProductId int NOT NULL AUTO_INCREMENT,
-> ProductName varchar(30)
-> );
ERROR 1075 (42000) − Incorrect table definition; there can be only one auto column and it
must be defined as a key위와 같이 ERROR 1075 오류가 발생합니다. 이 오류를 해결하려면 해당 열을 기본 키로 선언해야 합니다.
기본 키를 설정한 올바른 테이블 생성
ProductId를 기본 키로 설정하여 테이블을 생성하면 정상적으로 처리됩니다.
mysql> create table EquivalentOfIdentityInMySQL
-> (
-> ProductId int NOT NULL AUTO_INCREMENT,
-> ProductName varchar(30)
-> ,
-> PRIMARY KEY(ProductId)
-> );
Query OK, 0 rows affected (0.59 sec)데이터 삽입과 자동 증가 확인
ProductId 값을 직접 전달하지 않으면, MySQL은 기본적으로 1부터 시작하여 다음 숫자부터는 1씩 자동으로 증가시킵니다. 실제로 레코드를 삽입해 확인해 보겠습니다.
mysql> insert into EquivalentOfIdentityInMySQL(ProductName) values('Product-1');
Query OK, 1 row affected (0.14 sec)
mysql> insert into EquivalentOfIdentityInMySQL(ProductName) values('Product-2');
Query OK, 1 row affected (0.14 sec)
mysql> insert into EquivalentOfIdentityInMySQL(ProductName) values('Product-34');
Query OK, 1 row affected (0.10 sec)SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from EquivalentOfIdentityInMySQL;
실행 결과는 다음과 같습니다.
+-----------+-------------+ | ProductId | ProductName | +-----------+-------------+ | 1 | Product-1 | | 2 | Product-2 | | 3 | Product-34 | +-----------+-------------+ 3 rows in set (0.00 sec)
결과 분석
출력 결과를 보면 ProductId 열에는 값을 직접 입력하지 않았음에도 불구하고, 1부터 시작하여 각 행마다 1씩 증가한 번호가 자동으로 할당된 것을 확인할 수 있습니다. 이것이 바로 SQL Server의 IDENTITY 열과 동일하게 작동하는 MySQL의 AUTO_INCREMENT 기능입니다.