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

MySQL에서 SQL Server IDENTITY 열과 동일한 기능은 무엇일까요?

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 기능입니다.