【MySQL解説】テーブルの全行を別のテーブルへコピーする方法
MySQLであるテーブルのすべての行(レコード)を別のテーブルにコピーしたい場合は、INSERT INTO ... SELECT 文を使用します。SELECT文で取得した結果をそのまま別テーブルへ挿入できるため、テーブル間のデータ移行やバックアップ作成などに非常に便利です。
基本構文
insert into yourTableName2(yourColumnName1,...N) select yourColumnName1,..N from yourTableName1;
コピー先のテーブルのカラム名を指定し、SELECT文でコピー元テーブルからデータを取得します。カラム名が異なっていても、データ型さえ一致していればコピー可能です。
実際の手順
1. コピー元テーブルを作成する
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable1(FirstName varchar(100)); Query OK, 0 rows affected (1.11 sec)
2. レコードを挿入する
INSERTコマンドを使って、いくつかのレコードを追加します。
mysql> insert into DemoTable1 values('John');
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable1 values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1 values('Bob');
Query OK, 1 row affected (0.40 sec)
3. レコードを確認する
SELECT文で、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable1;
以下のような出力が得られます。
+-----------+ | FirstName | +-----------+ | John | | Chris | | Bob | +-----------+ 3 rows in set (0.00 sec)
4. コピー先テーブルを作成する
次に、コピー先となる2つ目のテーブルを作成します。ここでは、コピー元とは異なるカラム名(EmployeeName)を設定しています。
mysql> create table DemoTable2 (EmployeeName varchar(100)); Query OK, 0 rows affected (0.78 sec)
5. 全行をコピーする
いよいよ、INSERT INTO ... SELECT文を使って、テーブルの全行を別テーブルへコピーします。
mysql> insert into DemoTable2(EmployeeName) select FirstName from DemoTable1; Query OK, 3 rows affected (0.52 sec) Records: 3 Duplicates: 0 Warnings: 0
「Records: 3」と表示されており、3件のレコードが正常にコピーされたことがわかります。
6. コピー結果を確認する
最後に、2つ目のテーブルの内容を確認して、正しくコピーされているかチェックしましょう。
mysql> select *from DemoTable2;
実行結果は以下の通りです。
+--------------+ | EmployeeName | +--------------+ | John | | Chris | | Bob | +--------------+ 3 rows in set (0.00 sec)
まとめ
このように、INSERT INTO ... SELECT文を使えば、カラム名が異なるテーブル間でも、すべての行を簡単にコピーできます。WHERE句を組み合わせれば特定の条件に合う行だけをコピーすることも可能なので、用途に応じて柔軟に活用してください。
-
MySQLで1つのテーブルから別のテーブルに行をコピーする方法【INSERT INTO SELECT文の使い方】
MySQLでテーブル間の行コピーを実現する方法MySQLであるテーブルから別のテーブルへ行(レコード)をコピーしたい場合は、INSERT INTO SELECT文を使用します。この文を使えば、SELECT句で取得したデータをそのまま別のテーブルに挿入できるため、WHERE句による条件指定と組み合わせれば、必要な行だけを効率よくコピーすることも可能です。ここでは、実際にサンプルテーブルを作成し、行をコピーする手順を順番に解説します。手順1:コピー元のテーブルを作成するまず、コピー元となるテーブル「DemoTable1879」を作成します。mysql> create table DemoTa
-
MySQLで異なる列を持つ別テーブルへレコードをコピーする方法(INSERT INTO SELECT活用)
あるテーブルから、列名や構成が異なる別のテーブルへレコードをコピーしたい場合、INSERT INTO SELECT 文を使用します。この記事では、実際にサンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。 ステップ1:コピー元のテーブルを作成する まずはコピー元となるテーブル「DemoTable1900」を作成します。ClientIdは自動採番(AUTO_INCREMENT)とし、初期値を1000に設定しています。また、ClientAgeにはデフォルト値29を設定しました。 mysql> create table DemoTable1900 ( Clie