Edited at

テーブルの複製

既存テーブルの中身ごと複製したい時、各DBでコマンドが異なるのでまとめ。

SELECTの内容を変更すれば、項目を抜き出して作成したり、とある条件下のデータのみ抽出して別テーブルで作成することも可能。


SQLite

CREATE TABLE "新テーブル" AS SELECT * FROM "既存テーブル"


※SQLiteの場合、PRIMARY KEYは設定されないので、複製後に個別に設定が必要


MySQL

CREATE TABLE "新テーブル" (SELECT * FROM "既存テーブル")



PostgreSQL

CREATE TABLE "新テーブル" AS SELECT * FROM "既存テーブル";



Oracle

CREATE TABLE "新テーブル" AS SELECT * FROM "既存テーブル"



SQLServer

SELECT * INTO "新テーブル" FROM "既存テーブル"




SQLiteで項目抜き出し

CREATE TABLE "新テーブル" AS SELECT "列A", "列B" FROM "既存テーブル"

上記は、列Aと列Bだけのテーブルが作成される。

データの中身は、既存テーブルからコピーされる。


SQLiteで条件抜き出し

CREATE TABLE "新テーブル" AS SELECT * FROM "既存テーブル" WHERE "列A" < 100

上記は、既存テーブルと同じ構造のテーブルが作成され、データの中身は列Aが100より小さいデータがあればINSERTされる。

該当のデータがなくてもテーブル自体は作成されている。