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

MySQLでAUTO_INCREMENTの開始値を設定しZEROFILLを使う方法:INSERT時に値を指定しないとどうなる?

AUTO_INCREMENTのカスタム値とZEROFILLを組み合わせたテーブル作成

ここでは、StudentId列に対してAUTO_INCREMENT = 100というカスタム開始値を設定し、さらにZEROFILLを指定したテーブルを作成する例を見ていきましょう。

mysql> create table DemoTable
(
   StudentId int(7) ZEROFILL NOT NULL AUTO_INCREMENT,
   PRIMARY KEY(StudentId)
)AUTO_INCREMENT=100;
Query OK, 0 rows affected (0.48 sec)

この定義では、int型に表示幅7を指定し、ZEROFILLによって足りない桁が0で埋められます。また、AUTO_INCREMENT=100により、自動採番される最初の値が100から始まります。

値を指定せずにレコードを挿入する

次に、insertコマンドを使ってテーブルにレコードを挿入します。挿入時に値を一切指定しない場合でも、AUTO_INCREMENTの設定に従って100から順に連番が自動的に採番され、ZEROFILLを指定しているため、左側の余った桁はすべて0で埋められます。

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.09 sec)

挿入結果の確認

select文を使って、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行すると、以下のような出力が得られます。

+-----------+
| StudentId |
+-----------+
| 0000100   |
| 0000101   |
| 0000102   |
| 0000103   |
+-----------+
4 rows in set (0.00 sec)

このように、INSERT文で値を省略しても、AUTO_INCREMENTによって100から順番に一意なIDが自動的に割り当てられ、ZEROFILLの効果により7桁に満たない部分が0でパディングされて表示されることが確認できます。

  1. MySQLのCASEステートメントで空の値にカスタム名を表示する方法

    MySQLで空の値(空文字列)を含むカラムを取得する際、そのまま表示すると見栄えが悪くなることがあります。そんなときに便利なのが CASE WHEN ステートメントです。この記事では、空の値に対して任意のカスタム名を表示する方法を、実際のSQL例とともにわかりやすく解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(20) -> ); Query OK, 0 rows affected (0.62 sec)テストデータの挿入次に

  2. 【MySQL解説】UNIQUE制約付きカラムに重複値を含む複数行INSERTを実行するとどうなる?

    UNIQUE制約と重複データを含む複数行INSERTの挙動MySQLでは、UNIQUE制約が設定されたカラムに対して、重複する値を含む複数行のINSERT文を実行すると、エラーが発生し、テーブルには1件も挿入されません。これは重要なポイントです。INSERT文に含まれる一部の行だけがエラーになるのではなく、単一のINSERT文は原子的(アトミック)に処理されるため、1行でも制約違反があれば文全体が失敗し、ロールバックされます。以下、実際の例で確認してみましょう。1. サンプルテーブルの作成まず、StudentIdカラムにUNIQUE制約を設定したテーブルを作成します。mysql> cre