既存テーブルの中身ごと複製したい時、各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される。
該当のデータがなくてもテーブル自体は作成されている。