![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/MySQL_AUTO_INCREMENT-304x201.png)
MySQLデータベースで、PRIMARY KEYであるID列にAUTO_INCREMENTが設定されている。
このテーブルにIDを指定してデータを挿入することができるのか?
答えは「できる」だ。
では、実演。
実演の準備
まず、テーブルを作成する。
ID列にAUTO_INCREMENTを指定し、PRIMARY KEYを設定する。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_create_table-600x87.jpg)
次にデータを3行INSERTする。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_insert01-600x43.jpg)
SELECTしてINSERTの結果を確認する。
きちんと3行あり、ID1、2、3があることが確認できる。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_select_table-600x22.jpg)
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/select01.jpg)
この時のAUTO_INCREMENT値(次に使われる数値)を確認すると「4」となっている。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_information_schema-600x45.jpg)
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/auto_increment01.jpg)
次にID=2のデータを削除し、歯抜け状態にする。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_delete-600x26.jpg)
すぐさま3行追加する。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_insert02-600x47.jpg)
SELECTしてテーブルのデータを確認してみよう。
最初に3行挿入して1行削除し、追加で3行挿入したから5行あるはずだ。
ID=2のデータを削除したからそれがないこともわかる。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/select02.jpg)
ちなみに、この時のAUTO_INCREMENT値(次に使われる数値)を確認すると「7」となっている。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_information_schema-600x45.jpg)
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/auto_increment02.jpg)
IDを指定してデータを挿入する
INSERT文 IDに「2」を指定して実行する。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_insert03-600x26.jpg)
SELECTして結果を見てみる。
ID=2のデータがあることがわかる。当然だが、最初のID=2のデータとはpost_dateの値が違う。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_select_table-600x22.jpg)
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/select03.jpg)
AUTO_INCREMENT値(次に使われる数値)は「7」のままだ。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/auto_increment03.jpg)
続けて、ID=100のデータを挿入したらどうなるか
ここでは、AUTO_INCREMENT値(次に使われる数値)は「7」だ。
IDが100のデータを挿入したらどうなるのだろうか。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_insert04-600x31.jpg)
もちろん、INSERTはできる。
SELECTしてテーブルを確認するとこうなっている。
当然の結果だ。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/select04.jpg)
AUTO_INCREMENT値(次に使われる数値)はどうなっているかもうわかるだろう。
「101」だ。
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/SQL_information_schema-600x45.jpg)
![](https://blog-cdn.booklook.jp/wp-content/uploads/2023/10/auto_increment04.jpg)
まとめ
AUTO_INCREMENTが設定されていても、IDを指定してデータをINSERTできる。
テーブルにあるデータよりも大きなAUTO_INCREMENTを指定すると、AUTO_INCREMENT値(次に使われる数値)がそれ以上の値に更新される。