MySQL,テーブルの構造、属性、データを完全にコピーする

スポンサーリンク

鍛錬 969

MySQL,テーブルの構造、属性、データを完全にコピーする

CREATE TABLE 、INSERT INTO 、SELECT 等を使用すると、テーブルのカラム構造、カラム属性、データを完全にコピーして新しくテーブルを作成することができます。

1. 新しくテーブルを作成する

まずは、「テーブルのカラム構造とカラム属性」のみをコピーして、新しくテーブルを作成します。

カラム構造と、カラムに設定されている主キー(primary key) や AUTO_INCREMENT 等のカラム属性のみがコピーされます。

データはコピーされません。

CREATE TABLE 作成するテーブル名 LIKE コピー元のテーブル名;

2. テーブルにデータをコピーする

次に、新しく作成したテーブルにデータをコピーします。

INSERT INTO コピー先のテーブル名 SELECT * FROM コピー元のテーブル名;
スポンサーリンク

実行結果

今回は、テーブル fruits をコピーし、テーブル new_table を新規で作成しています。

コピー元のテーブル名 新規で作成するテーブル名
fruits new_table

 
以下は、コピー元のテーブル fruits です。

id
(primary key)
(AUTO_INCREMENT)
name price
1 apple 250
2 orange 300
3 grape 500

 
テーブルを作成しコピーする際に、以下の内容を確認しています。

  • 新しくテーブルを作成した後、DESC を使用してテーブル構成が同じであることを確認。
  • データをコピーした後、SELECT を使用して同じデータがコピーされたことを確認。
mysql> 
mysql> create table new_table like fruits;
Query OK, 0 rows affected (0.01 sec)

mysql> 
mysql> 
mysql> desc fruits;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(256) | YES  |     | NULL    |                |
| price | int(11)      | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> 
mysql> 
mysql> desc new_table;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(256) | YES  |     | NULL    |                |
| price | int(11)      | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> 
mysql> 
mysql> insert into new_table select * from fruits;
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> 
mysql> 
mysql> select * from fruits;
+----+--------+-------+
| id | name   | price |
+----+--------+-------+
|  1 | apple  |   250 |
|  2 | orange |   300 |
|  3 | grape  |   500 |
+----+--------+-------+
3 rows in set (0.00 sec)
mysql> 
mysql> 
mysql> select * from new_table;
+----+--------+-------+
| id | name   | price |
+----+--------+-------+
|  1 | apple  |   250 |
|  2 | orange |   300 |
|  3 | grape  |   500 |
+----+--------+-------+
3 rows in set (0.00 sec)

 
上記に示した通り、テーブルのカラム構造、カラム属性、データを完全にコピーして新しくテーブルを作成することができました。

タイトルとURLをコピーしました