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

MySQLのZEROFILLとAUTO_INCREMENTを使ってカスタム自動採番を実現する方法

MySQLでは、ZEROFILLAUTO_INCREMENTを組み合わせることで、桁数が固定された連番(自動インクリメント)を作成できます。例えば、ユーザーIDを「0000101」のように7桁で表示したい場合に便利です。

ここでは、実際にテーブルを作成して動作を確認してみましょう。まず、UserIdカラムにZEROFILLとAUTO_INCREMENTを設定したテーブルを作成します。

mysql> create table DemoTable1831
    (
    UserId int(7) zerofill auto_increment,
    PRIMARY KEY(UserId)
    );
Query OK, 0 rows affected (0.00 sec)

レコードの挿入

次に、INSERTコマンドを使ってレコードを挿入します。値を明示的に指定することも、空のVALUES()で自動採番させることも可能です。

mysql> insert into DemoTable1831 values(101);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1831 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1831 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1831 values();
Query OK, 1 row affected (0.00 sec)

結果の確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable1831;

実行すると、以下のような出力が得られます。UserIdフィールドは幅7桁のZEROFILLが適用されているため、すべての値が先頭にゼロを埋めた形式で表示されていることがわかります。

+---------+
| UserId  |
+---------+
| 0000101 |
| 0000102 |
| 0000103 |
| 0000104 |
+---------+
4 rows in set (0.00 sec)

ポイント解説

  • ZEROFILL:指定した表示幅(この例ではint(7))に満たない数値の前にゼロを埋めて表示します。
  • AUTO_INCREMENT:レコード挿入時に自動的に連番を割り当てます。既存の最大値より大きい値を指定した場合、次の採番はその値から続きます。
  • 注意点:ZEROFILLはあくまで表示上の整形であり、格納される実際の数値には影響しません。また、MySQL 8.0以降では整数型の表示幅指定は非推奨となっているため、新規プロジェクトではLPAD関数などでの代替も検討しましょう。
  1. MySQLのSELECT文をカスタム変数に設定する方法

    この記事では、MySQLでSELECT文(クエリ)の結果をカスタム変数(ユーザー定義変数)に設定する方法を解説します。まずサンプル用のテーブルを作成してデータを挿入し、その後SET句と「@」から始まる変数を使ってクエリを変数に格納する手順を、実際の実行例とともに見ていきましょう。 1. テーブルを作成する 最初に、以下のコマンドでテーブルを作成します。 mysql> create table DemoTable2013     -> (     -> Name varchar(20)  

  2. MySQLのAUTO_INCREMENTとは?自動採番と初期値の設定方法をわかりやすく解説

    AUTO_INCREMENT属性の基本MySQLのAUTO_INCREMENT属性は、新しい行に対して一意の識別子(連番)を自動的に生成するために使用されます。カラムが「NOT NULL」として宣言されている場合、そのカラムにNULLを代入することで、連番のシーケンスを生成することが可能です。AUTO_INCREMENTカラムに任意の値を挿入すると、そのカラムは指定した値に設定され、同時にシーケンスもリセットされます。以降は、挿入された最大値を起点として、連続した値が自動的に生成されていきます。また、既存のAUTO_INCREMENTカラムを更新した場合も、AUTO_INCREMENTのシーケ