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