MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで001から始まる自動採番のユーザーIDシーケンス番号を表示する方法

MySQLでは、AUTO_INCREMENTで生成される連番は通常「1」から始まります。しかし、会員IDや管理番号などで「001」「002」のようにゼロ埋め(ゼロパディング)された形式で表示したいケースはよくあります。

このような場合には、カラムに ZEROFILL 属性を指定し、テーブルを変更することで実現できます。以下、具体的な手順を順番に見ていきましょう。

1. 検証用テーブルを作成する

まず、動作を確認するためのサンプルテーブルを作成します。

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

2. ALTER TABLEでZEROFILLとAUTO_INCREMENTを設定する

次に、ALTER TABLE 文を使って UserId カラムを変更します。ここでのポイントは次の3つです。

  • ZEROFILL:桁数に満たない場合、先頭をゼロで埋める
  • int(3):表示幅を3桁に指定(例:001)
  • AUTO_INCREMENT PRIMARY KEY:自動採番の主キーとして設定
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)

Type列に int(3) unsigned zerofill と表示されていれば、設定は成功です。

4. レコードを挿入して動作を確認する

INSERTコマンドでデータを追加してみます。UserIdは自動的に採番されるため、UserNameだけを指定すればOKです。

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桁の形式で自動採番されていることが確認できます。

注意点

  • ZEROFILLはあくまで表示上の整形であり、実際に格納されている値は数値(1、2…)です。
  • MySQL 8.0以降では、表示幅の指定(int(3)など)は非推奨となっており、将来的に削除される可能性があります。新しいプロジェクトでは、アプリケーション側で LPAD() 関数などを使って整形する方法も検討するとよいでしょう。
  1. MySQLでテーブルのデータを削除した後にAUTO_INCREMENTを1から再開させる方法

    MySQLでデータ削除後にAUTO_INCREMENTを1に戻す方法MySQLでは、DELETE文でレコードを削除してもAUTO_INCREMENTの値はリセットされず、次に挿入されるレコードには続きの番号が割り当てられます。自動インクリメントの値を1に戻したい場合は、TRUNCATE TABLEコマンドを使用します。本記事では、実際のSQL例を使ってその動作を確認していきます。検証用テーブルの作成まず、テーブルを作成します。mysql> create table DemoTable1796 ( StudentId int NOT NULL AUTO_INCREMENT

  2. MySQLのストアドプロシージャでテーブルのレコードを表示する方法

    MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT