MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

【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句を組み合わせれば特定の条件に合う行だけをコピーすることも可能なので、用途に応じて柔軟に活用してください。

  1. MySQLで1つのテーブルから別のテーブルに行をコピーする方法【INSERT INTO SELECT文の使い方】

    MySQLでテーブル間の行コピーを実現する方法MySQLであるテーブルから別のテーブルへ行(レコード)をコピーしたい場合は、INSERT INTO SELECT文を使用します。この文を使えば、SELECT句で取得したデータをそのまま別のテーブルに挿入できるため、WHERE句による条件指定と組み合わせれば、必要な行だけを効率よくコピーすることも可能です。ここでは、実際にサンプルテーブルを作成し、行をコピーする手順を順番に解説します。手順1:コピー元のテーブルを作成するまず、コピー元となるテーブル「DemoTable1879」を作成します。mysql> create table DemoTa

  2. MySQLで異なる列を持つ別テーブルへレコードをコピーする方法(INSERT INTO SELECT活用)

    あるテーブルから、列名や構成が異なる別のテーブルへレコードをコピーしたい場合、INSERT INTO SELECT 文を使用します。この記事では、実際にサンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。 ステップ1:コピー元のテーブルを作成する まずはコピー元となるテーブル「DemoTable1900」を作成します。ClientIdは自動採番(AUTO_INCREMENT)とし、初期値を1000に設定しています。また、ClientAgeにはデフォルト値29を設定しました。 mysql> create table DemoTable1900 ( Clie