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

MySQL 시퀀스란? AUTO_INCREMENT로 시퀀스 생성하는 방법

MySQL 시퀀스(Sequence)란?

MySQL에서 시퀀스는 1 또는 사용자가 지정한 값(예: 0)부터 시작하여 오름차순으로 자동 생성되는 정수 목록을 의미합니다. 많은 애플리케이션에서 레코드를 고유하게 식별하기 위한 번호가 필요하며, 이때 시퀀스가 널리 활용됩니다.

시퀀스의 대표적인 활용 예

  • CRM 시스템의 고객 ID
  • 인사(HR) 시스템의 사원 번호
  • 서비스 관리 시스템의 설비(장비) 번호

MySQL에서 시퀀스를 자동으로 생성하려면 컬럼에 AUTO_INCREMENT 속성을 설정해야 합니다. 일반적으로 기본 키(PRIMARY KEY) 컬럼에 이 속성을 적용하는 것이 표준적인 방법입니다.

AUTO_INCREMENT 사용 규칙

AUTO_INCREMENT 속성을 사용할 때는 다음 규칙을 반드시 지켜야 합니다.

  • 하나의 테이블에는 AUTO_INCREMENT 컬럼을 하나만 둘 수 있으며, 데이터 타입은 일반적으로 정수형(INT, BIGINT 등)이어야 합니다.
  • AUTO_INCREMENT 컬럼은 반드시 인덱스가 설정되어 있어야 합니다. 즉, PRIMARY KEY 또는 UNIQUE 인덱스 중 하나여야 합니다.
  • AUTO_INCREMENT 컬럼에는 NOT NULL 제약 조건이 필요합니다.
  • AUTO_INCREMENT 속성을 컬럼에 설정하면 MySQL이 자동으로 NOT NULL 제약 조건을 추가해 줍니다.

MySQL 시퀀스 생성 예제

다음은 MySQL에서 시퀀스를 생성하는 기본적인 예제입니다.

CREATE TABLE tableName (
emp_no INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50)
)

위 예제에서 emp_no 컬럼은 AUTO_INCREMENT와 PRIMARY KEY가 함께 적용되어, 새로운 행이 삽입될 때마다 자동으로 고유한 사원 번호가 부여됩니다.

AUTO_INCREMENT 컬럼의 동작 방식

  • AUTO_INCREMENT 컬럼의 시작 값은 보통 1이며, NULL 값이 삽입되거나 INSERT 문에서 해당 컬럼의 값이 생략되면 1씩 자동으로 증가합니다.
  • 마지막으로 생성된 시퀀스 번호는 LAST_INSERT_ID() 함수를 통해 확인할 수 있습니다.
  • 마지막에 생성된 시퀀스 값은 세션(session) 단위로 관리되므로, 각 연결마다 독립적으로 유지됩니다.
  • 다른 연결(connection)에서 새로운 시퀀스 번호가 생성되더라도 LAST_INSERT_ID() 함수는 현재 세션의 마지막 값을 반환하므로 영향을 받지 않습니다.
  • 새 행을 삽입할 때 시퀀스 컬럼에 직접 값을 지정하면, MySQL은 해당 값이 컬럼에 아직 존재하지 않는 경우에만 그 값을 그대로 삽입합니다.

참고: 현재 AUTO_INCREMENT 값 확인하기

테이블의 다음 시퀀스 시작 값을 확인하려면 다음과 같이 조회할 수 있습니다.

SHOW TABLE STATUS LIKE 'tableName';

또는 information_schema.TABLESAUTO_INCREMENT 컬럼을 조회하면 됩니다. 이러한 방식을 활용하면 시퀀스 흐름을 더욱 체계적으로 관리할 수 있습니다.