MySQLでテーブルのデータを選択して、同じデータベース内の別のテーブルに挿入する方法
あるテーブルから別のテーブルへデータを挿入するには、INSERT INTOステートメントを使用します。この記事では、SELECT文で取得したデータを、同じデータベース内の別テーブルへ挿入する手順を、実際のSQL文と実行結果とともに解説します。
1. 元となるテーブルを作成する
まず、データのコピー元となるテーブル「DemoTable1」を作成します。
mysql> create table DemoTable1 ( Id int, FirstName varchar(20), Age int ); Query OK, 0 rows affected (0.00 sec)
2. テーブルにレコードを挿入する
insertコマンドを使って、テーブルにレコードを追加します。
mysql> insert into DemoTable1 values(101,'Chris',24); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1 values(102,'David',28); Query OK, 1 row affected (0.00 sec)
3. テーブルの内容を確認する
selectステートメントで、テーブル内の全レコードを表示してみましょう。
mysql> select * from DemoTable1;
実行すると、以下のような出力が得られます。
+------+-----------+------+ | Id | FirstName | Age | +------+-----------+------+ | 101 | Chris | 24 | | 102 | David | 28 | +------+-----------+------+ 2 rows in set (0.00 sec)
4. 挿入先のテーブルを作成する
次に、データの挿入先となる2つ目のテーブル「DemoTable2」を作成します。カラム名は元のテーブルと異なっていても問題ありません。
mysql> create table DemoTable2 ( EmployeeId int, EmployeeName varchar(20), EmployeeAge int ); Query OK, 0 rows affected (0.00 sec)
5. データを選択して別テーブルへ挿入する
ここが本題です。INSERT INTO文とSELECT文を組み合わせることで、あるテーブルからデータを抽出し、そのまま別のテーブルへ挿入できます。以下の例では、DemoTable1からIdが102のレコードだけを選択し、DemoTable2へ挿入しています。
mysql> insert into DemoTable2(EmployeeId,EmployeeName,EmployeeAge) select Id,FirstName,Age from DemoTable1 where Id=102; Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0
このように、INSERT INTO文のカラムリストと、SELECT文で取得するカラムの順序・数を対応させるのがポイントです。WHERE句を使えば、特定の条件に合うデータだけをコピーすることも可能です。
6. 挿入結果を確認する
最後に、DemoTable2の内容をselectステートメントで確認します。
mysql> select * from DemoTable2;
実行結果は以下の通りです。DemoTable1のデータが、別名のカラムを持つDemoTable2に正しく挿入されていることがわかります。
+------------+--------------+-------------+ | EmployeeId | EmployeeName | EmployeeAge | +------------+--------------+-------------+ | 102 | David | 28 | +------------+--------------+-------------+ 1 row in set (0.00 sec)
まとめ
MySQLでは、「INSERT INTO テーブル名(カラムリスト) SELECT ...」の形式を使うことで、テーブル間のデータコピーを簡単に行えます。WHERE句で条件を指定すれば必要なデータだけを抽出できるため、テーブルのバックアップやデータの移行など、さまざまな場面で活用できる便利なテクニックです。
-
JavaでMySQLデータベースにデータを挿入する方法をわかりやすく解説
JavaからMySQLデータベースにデータを挿入するには、SQLのINSERTコマンドを使用します。基本的な構文は以下の通りです。 INSERT INTO テーブル名(カラム名1, カラム名2, ......カラム名N) VALUES(値1, 値2, ......値N); ここからは、Javaプログラムを使って実際にMySQLデータベースへレコードを挿入する手順を、順を追って見ていきましょう。 ステップ1:MySQLでテーブルを作成する まず、データの挿入先となるテーブルをMySQL側に作成します。以下のクエリを実行してください。 mysql> create table Insert
-
JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法
MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI