テーブルのコピー

MySQLをちょこちょこいじり始めてしばらく経ちますが、相変わらず慣れない。頑張らんと。


どっかで見たテーブルのコピーの仕方。
CREATE TABLE new_tbl LIKE orig_tbl;
INSERT INTO new_tbl SELECT * FROM orig_tbl;


でもテーブルのコピーだけならこっちでもいけるんじゃないの?1行でラクじゃない?
CREATE TABLE new_tbl SELECT * FROM orig_tbl;


ちゃんと意味がありました。以下リファレンスから。
http://dev.mysql.com/doc/refman/5.1-olh/ja/create-table.html

CREATE TABLE ステートメントの最後に SELECT を追加することで、1 つのテーブルから別のテーブルを作成することができます。

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

元テーブルの中で指定されたカラム属性やインデックスを含む、ほかのテーブルの定義に基づき空のテーブルを作成するには、LIKE を利用してください。

CREATE TABLE new_tbl LIKE orig_tbl;

コピーは元テーブルと同じバージョンのテーブルストレージフォーマットを利用して作成されます。元のテーブルには SELECT 権限が必要です。

SELECTでは属性やインデックス、オートインクリメントなどの定義は含まれないので、
それらの情報もコピーしたいならLIKEを使いましょうとのこと。