SELECT * INTO 文を使用し、テーブルの作成とデータのコピーを一括して行います。
テーブルとデータをコピーするSQL
SELECT * INTO バックアップ先テーブル名 FROM 元テーブル名
- バックアップ先のテーブルも作成されます。
- 主キー・制約・トリガー・インデックスなどは複製されません。
- WHERE 条件を指定すると、条件に一致するデータのみコピーされます。
SELECT * INTO の構文は次の通りです。
SELECT <項目>,<項目>, ・・・
INTO <新しいテーブル名>
FROM <既存テーブル名>
WHERE <抽出条件>
例1 データはコピーしない
SELECT * INTO バックアップ先テーブル名 FROM 元テーブル名 WHERE 1=2
- 1=2 の条件は成立しないので、データはコピーされません。
例2 列を追加したテーブルを作成してレコードをコピー
SELECT *,
'TEST' AS 新しい列名
INTO バックアップ先テーブル名
FROM 元テーブル名
- バックアップ先のテーブルに"新しい列名"が追加されます。この例では、全レコードの新しい列に 'TEST' がセットされます。
検証環境
- Microsoft SQL Server Express Edition (64-bit) プラットフォーム:NT x64 バージョン:11.0.7462.6
- Microsoft Windows 10 Pro Version 1909 OS Build 18363.628