AUTO_INCREMENT

moon.kick·2025년 3월 13일

SQL

목록 보기
5/11

AUTO_INCREMENT는 MySQL과 같은 관계형 데이터베이스에서 특정 컬럼에 대해 자동으로 숫자가 증가하는 값을 할당하는 기능입니다. 주로 기본 키(PRIMARY KEY)나 고유한 값(UNIQUE)을 생성할 때 사용됩니다. 이 기능을 사용하면 새로운 레코드가 추가될 때마다 그 컬럼의 값이 자동으로 증가하여, 수동으로 값을 지정할 필요가 없어집니다. 다음은 AUTO_INCREMENT의 특징을 좀 더 상세히 설명한 내용입니다:

1. 타입 제약 (INT 타입에서 사용 가능)

AUTO_INCREMENTINT, BIGINT와 같은 정수형 타입에서만 사용할 수 있습니다. 일반적으로 INT를 사용하지만, 매우 큰 범위의 숫자가 필요한 경우 BIGINT를 사용할 수 있습니다.

2. 기본 키 또는 고유 키 필요 (PRIMARY KEY 또는 UNIQUE)

  • AUTO_INCREMENT는 보통 테이블에서 기본 키(Primary Key)유니크 키(Unique Key)로 설정된 컬럼에 사용됩니다. 기본 키는 레코드를 고유하게 식별할 수 있게 해주며, 유니크 키는 중복되지 않는 값을 보장합니다.
  • 테이블에 여러 AUTO_INCREMENT가 있을 수 없기 때문에, 이 속성이 설정된 컬럼은 Primary Key 또는 Unique 제약을 가지는 것이 일반적입니다.

3. 하나의 테이블에 하나의 AUTO_INCREMENT 컬럼만 존재

AUTO_INCREMENT하나의 테이블에 하나의 컬럼에만 사용할 수 있습니다. 이유는 여러 AUTO_INCREMENT 컬럼이 있을 경우 각 컬럼이 증가하는 값이 서로 충돌할 수 있기 때문입니다. 예를 들어, 두 개의 AUTO_INCREMENT 컬럼이 있으면 데이터베이스가 어떤 기준으로 값을 증가시킬지 명확하지 않아서 혼란이 발생할 수 있습니다.

4. 자동 증가하는 값은 시퀀스로 관리됨

AUTO_INCREMENT시퀀스(sequence)로 관리됩니다. 새로운 레코드가 추가될 때마다 이전 값에 1을 더한 값이 자동으로 삽입됩니다. 예를 들어, 첫 번째 레코드가 1이라면, 두 번째 레코드는 2, 세 번째 레코드는 3이 됩니다.

  • 이 값은 테이블 내에서만 유효하며, 다른 테이블의 AUTO_INCREMENT와는 독립적으로 증가합니다.
  • 만약 테이블에서 삭제된 레코드가 있으면, 삭제된 레코드의 값은 다시 사용되지 않고, 항상 다음 숫자가 자동으로 할당됩니다. 이 때문에 데이터가 삭제되어도 AUTO_INCREMENT 값은 늘어나며, 빈 공간을 채우지 않습니다.

5. 자동 증가 값의 시작 위치 및 증가 간격

AUTO_INCREMENT의 기본 설정은 첫 번째 레코드부터 1부터 시작하고, 이후로 1씩 증가합니다. 그러나 AUTO_INCREMENT 값의 시작 값이나 증가 간격을 조정할 수 있습니다.

  • 예를 들어, AUTO_INCREMENT 값의 시작을 100으로 설정하거나, 증가 간격을 5로 설정할 수 있습니다.

    CREATE TABLE example (
        id INT AUTO_INCREMENT,
        name VARCHAR(100),
        PRIMARY KEY (id)
    );

6. 테이블 생성 후 AUTO_INCREMENT 값 수정

AUTO_INCREMENT 값은 테이블 생성 후에도 수정할 수 있습니다. 예를 들어, 현재 값이 100일 때, AUTO_INCREMENT 값을 200으로 수정하고 싶다면 아래와 같이 할 수 있습니다:

ALTER TABLE example AUTO_INCREMENT = 200;

7. 주의사항

  • NULL 값 허용: AUTO_INCREMENT 컬럼에 대해 명시적으로 NULL 값을 삽입하면 자동으로 값이 증가합니다. 예를 들어, INSERT INTO example (id, name) VALUES (NULL, 'John');id 컬럼에 자동으로 증가된 값을 할당합니다.
  • 중복 값 방지: AUTO_INCREMENT는 자동으로 증가하는 숫자이기 때문에, 중복된 값을 방지하고 각 레코드를 고유하게 만듭니다. 이 값은 자동으로 증가하지만, 직접 수정하거나 설정을 변경할 수도 있습니다.

예시:

CREATE TABLE users (
    user_id INT AUTO_INCREMENT,
    username VARCHAR(100),
    email VARCHAR(100),
    PRIMARY KEY (user_id)
);

INSERT INTO users (username, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (username, email) VALUES ('Bob', 'bob@example.com');
INSERT INTO users (username, email) VALUES ('Charlie', 'charlie@example.com');

위 예시에서 user_id 컬럼은 AUTO_INCREMENT를 사용하여 레코드가 추가될 때마다 자동으로 숫자가 증가합니다. 첫 번째 레코드에서 user_id는 1, 두 번째 레코드는 2, 세 번째는 3이 됩니다.

이처럼 AUTO_INCREMENT는 데이터베이스에서 고유한 값을 자동으로 생성하고 관리하는 데 매우 유용한 기능입니다.

profile
@mgkick

0개의 댓글