データベースは一度作成したら、あとから変更するのがものすごく大変になるので、作成前にしっかりと設計しておく必要があります。ただ、そうは言っても、あとから新しい要素が出てきたり、前提が変わったりして変更を余儀なくされることもあります。
MySQLでは以前の記事で紹介したALTER TABLE文や今から紹介する方法により、あとからでもテーブル構造などを変更することができるようになっています。
テーブル定義をコピーする
既存のテーブルを別名でコピーしたい場合、以下のように実行します。
> CREATE TABLE stuff_copy LIKE stuff;
構文は簡単で「CREATE TABLE <コピー先テーブル> LIKE <コピー元テーブル>」となります。
この文の注意点として、コピーされるのはあくまでテーブル定義のみであり、テーブルの中に格納されているデータ(行)はコピーされません。
> SELECT * FROM stuff_copy; Empty set (0.03 sec)
テーブルをデータを含めてコピーする
コピー元のテーブルに含まれるデータを含めてコピーしたい場合は、INSERT ~ SELECT文を使います。コピー元のテーブルでSELECTしたデータをコピー先のテーブルにINSERTする方法です。
> INSERT INTO stuff_copy (id,name,description,age) SELECT id,name,description,age FROM stuff;
VALUES句以降に対応する部分が、SELECT文になったようなイメージです。
コピーして新しく作成したテーブルのデータを見てみましょう。
> SELECT * FROM stuff_copy; +----+------+--------------------------+------+ | id | name | description | age | +----+------+--------------------------+------+ | 1 | 大崎 | 会長 | 66 | | 2 | 岡本 | 社長 | 53 | | 3 | 松本 | ダウンタウン、浜田の相方 | 55 | +----+------+--------------------------+------+
