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でパディングされて表示されることが確認できます。
-
MySQLのCASEステートメントで空の値にカスタム名を表示する方法
MySQLで空の値(空文字列)を含むカラムを取得する際、そのまま表示すると見栄えが悪くなることがあります。そんなときに便利なのが CASE WHEN ステートメントです。この記事では、空の値に対して任意のカスタム名を表示する方法を、実際のSQL例とともにわかりやすく解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(20) -> ); Query OK, 0 rows affected (0.62 sec)テストデータの挿入次に
-
【MySQL解説】UNIQUE制約付きカラムに重複値を含む複数行INSERTを実行するとどうなる?
UNIQUE制約と重複データを含む複数行INSERTの挙動MySQLでは、UNIQUE制約が設定されたカラムに対して、重複する値を含む複数行のINSERT文を実行すると、エラーが発生し、テーブルには1件も挿入されません。これは重要なポイントです。INSERT文に含まれる一部の行だけがエラーになるのではなく、単一のINSERT文は原子的(アトミック)に処理されるため、1行でも制約違反があれば文全体が失敗し、ロールバックされます。以下、実際の例で確認してみましょう。1. サンプルテーブルの作成まず、StudentIdカラムにUNIQUE制約を設定したテーブルを作成します。mysql> cre