auto_increment値を指定せずにMySQLテーブルへレコードを挿入する方法
auto_increment値なしでレコード挿入は可能か?
はい、可能です。AUTO_INCREMENTが設定されたカラムは、INSERT時に値を明示的に指定しなくても、MySQLが自動的に連番を採番してくれるためです。この記事では、実際にテーブルを作成し、auto_increment値を省略してレコードを挿入する手順を解説します。
1. テーブルの作成
まず、EmployeeIdカラムにAUTO_INCREMENTとPRIMARY KEYを設定したテーブルを作成します。
mysql> create table DemoTable1479
-> (
-> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeSalary int
-> );
Query OK, 0 rows affected (0.86 sec)ここでポイントとなるのは、EmployeeIdに「int NOT NULL AUTO_INCREMENT PRIMARY KEY」を指定している点です。これにより、主キーとして機能しながら、挿入のたびに自動で一意の連番が割り振られるようになります。
2. auto_increment値を省略してレコードを挿入
次に、INSERT文ではEmployeeSalaryのみを指定し、EmployeeIdは記述せずにレコードを挿入してみましょう。
mysql> insert into DemoTable1479(EmployeeSalary) values(6800); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable1479(EmployeeSalary) values(5600); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable1479(EmployeeSalary) values(5700); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable1479(EmployeeSalary) values(6900); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable1479(EmployeeSalary) values(15000); Query OK, 1 row affected (0.11 sec)
INSERT文のカラムリストに「(EmployeeSalary)」だけを書き、VALUES句には給与の値のみを渡しています。EmployeeIdを省略してもエラーにならず、正常に挿入できていることがわかります。
3. 挿入結果の確認
SELECT文ですべてのレコードを表示して、自動採番の結果を確認します。
mysql> select * from DemoTable1479;
実行結果は以下の通りです。
+------------+----------------+ | EmployeeId | EmployeeSalary | +------------+----------------+ | 1 | 6800 | | 2 | 5600 | | 3 | 5700 | | 4 | 6900 | | 5 | 15000 | +------------+----------------+ 5 rows in set (0.00 sec)
まとめ
結果を見ると、INSERT文でEmployeeIdを一度も指定していないにもかかわらず、1から5までの連番が自動的に採番されていることが確認できます。このように、AUTO_INCREMENTが設定されたカラムは値を省略できるため、主キーの管理を意識せずにシンプルなINSERT文を書くことができます。
なお、補足として、あえて特定の値を指定して挿入することも可能です。その場合、以降の自動採番は指定された最大値の続きから行われます。また、直前に採番された値は「LAST_INSERT_ID()」関数で取得できるため、関連テーブルへの挿入時にも活用できます。
-
MySQLのINSERT INTO SELECT構文でAUTO_INCREMENTテーブルにデータを挿入する方法
はじめにMySQLでは、INSERT INTO ... SELECT構文を使うことで、SELECT文の結果をそのまま別のテーブルへ挿入できます。AUTO_INCREMENT列を持つテーブルに対しても、SELECT句で明示的に値を指定すれば、任意のIDを設定した状態で挿入が可能です。本記事では、AUTO_INCREMENT主キーを持つテーブルに、INSERT INTO SELECT文で具体的な値を挿入する手順を、サンプルコードと実行結果とともに解説します。テーブルの作成まず、次のようにテーブルを作成します。mysql> create table DemoTable1923 &nb
-
MySQLのINSERTステートメントでVARCHAR型の日時データに分を加算する方法
はい、MySQLではテーブルに値を挿入する際に、分を加算することが可能です。本記事では、VARCHAR型として保存されている日時データに対して、STR_TO_DATE関数とDATE_ADD関数を組み合わせて分を加算する手順を具体例とともに解説します。サンプルテーブルの作成まず、テーブルを作成します。ここでは、日時をVARCHAR型(最大20文字)で格納するカラムを持つテーブルを定義します。mysql> create table DemoTable2026 -> ( -> Arrival