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

MySQL에서 001부터 시작하는 자동 증가 사용자 ID 시퀀스 번호 표시하는 방법

MySQL에서 001부터 시작하는 자동 증가 ID 만들기

사용자 ID를 001, 002처럼 앞자리가 0으로 채워진 형태로 표시하고 싶다면 ZEROFILL 옵션을 활용하면 됩니다. ZEROFILL은 지정한 표시 폭(display width)보다 숫자가 짧을 때 왼쪽을 0으로 채워 출력해 주는 MySQL의 속성입니다.

먼저 ALTER TABLE 문으로 기존 컬럼을 다음과 같이 변경합니다.

alter table yourTableName
    change yourColumnName yourColumnName int(3) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT PRIMARY KEY;

위 구문의 의미는 다음과 같습니다.

  • int(3): 숫자를 3자리 폭으로 표시
  • UNSIGNED: 음수를 허용하지 않아 저장 범위를 양수 쪽으로 넓힘
  • ZEROFILL: 3자리에 맞춰 왼쪽을 0으로 채움 (예: 1 → 001)
  • AUTO_INCREMENT PRIMARY KEY: 자동 증가 기본 키로 설정

1단계: 예제 테이블 생성

먼저 실습용 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1958
    (
    UserId int,
    UserName varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

2단계: 컬럼을 ZEROFILL 자동 증가로 변경

이제 UserId 컬럼을 001부터 시작하는 시퀀스 번호로 표시되도록 변경합니다.

mysql> alter table DemoTable1958
    change UserId UserId int(3) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT PRIMARY KEY;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

3단계: 테이블 구조 확인

DESC 명령으로 변경된 테이블 구조를 확인할 수 있습니다.

mysql> desc DemoTable1958;

실행 결과는 다음과 같습니다.

+----------+--------------------------+------+-----+---------+----------------+
| Field    | Type                      | Null | Key | Default | Extra          |
+----------+--------------------------+------+-----+---------+----------------+
| UserId   | int(3) unsigned zerofill | NO   | PRI | NULL    | auto_increment |
| UserName | varchar(20)              | YES  |     | NULL    |                |
+----------+--------------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

UserId 컬럼에 auto_incrementzerofill 속성이 정상적으로 적용된 것을 확인할 수 있습니다.

4단계: 데이터 삽입

INSERT 명령으로 레코드를 추가해 보겠습니다. UserId는 자동으로 증가하므로 UserName 값만 넣으면 됩니다.

mysql> insert into DemoTable1958(UserName) values('Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1958(UserName) values('David');
Query OK, 1 row affected (0.00 sec)

5단계: 결과 확인

SELECT 문으로 전체 레코드를 조회합니다.

mysql> select * from DemoTable1958;

실행 결과는 다음과 같습니다.

+--------+----------+
| UserId | UserName |
+--------+----------+
|    001 | Chris    |
|    002 | David    |
+--------+----------+
2 rows in set (0.00 sec)

결과를 보면 UserId가 001, 002처럼 3자리 형식으로 0이 채워져 자동 증가하는 것을 확인할 수 있습니다.

참고 사항

MySQL 8.0.17 버전부터는 정수 타입의 표시 폭(int(3) 등)이 공식적으로 지원 중단(deprecated)되었습니다. 따라서 최신 버전에서는 이 방식 대신 LPAD() 함수를 사용해 조회 시점에 0을 채우는 방법도 고려할 수 있습니다.

SELECT LPAD(UserId, 3, '0') AS UserId, UserName FROM DemoTable1958;

또한 ZEROFILL은 화면에 보이는 형식일 뿐, 실제 저장되는 값은 일반 정수라는 점도 기억해 두면 좋습니다.