Pocket

MySQLで新規にテーブルを作って、プライマリーキーをAUTO_INCREMENTに設定したときに調べたことをメモ。AUTO_INCREMENTを1番から採番するパターンと特定の番号の連番で採番したいパターンが出てきたので調査。

データベースはMySQLのバージョン5.6.38で試しました。select version();のSQL文で確認。

テストデータを作成

とりあえずテストデータを作成します。キノコ好きなので、キノコテーブルを作成。

出来上がったテーブルの構造を確認します。憶えついでに、テーブルの構造を確認するSQL文2種類。DESCは、SHOW COLUMNS FROM テーブル名;と同じようですが、コンパクトにかけるので、DESCで。(ORDER BY の DESC と間違えそう)

データの挿入(INSERT):ID指定をしない

作成したテーブルにデータを挿入してみます。AUTO_INCREMENTの設定フィールド「id」には値を設定せず、「name」フィールドにのみ値セット。INSERT INTO文でまとめて挿入します。

挿入されたデータを確認します。

1番から連番でidの値が挿入されました。

データの挿入(INSERT):ID指定をする

先程のテーブルに今度は、idの値を指定して挿入してみます。連番ではない番号で挿入してみる。

挿入されたデータの確認を。

指定した番号で挿入されました。この状態でidの値を指定せずに挿入すると…

11番が採番されました。

AUTO_INCREMENTの値を確認

AUTO_INCREMENTが次に採番する番号が何番かを確認する方法。テーブルの状態を見ることができるSQL文があるので、それで確認します。

テーブルの情報が多いので、表示は割愛しますが、その中に Auto_increment: 12 と書いてある部分があります。これが次にセットされる値になります。

AUTO_INCREMENTの値を変更する

もしAUTO_INCREMENTの値を変更する機会があればということで。テストデータとか入れたりして、終わったあとにデータと共にきれいにするときに、よく使っています。

\(^o^)/できた!
SQL文書くの好き。最近はフレームワークにお世話になるから、直接SQL文を書くことが少なくなった気がします。