SELECTした結果から表を作成する方法
SELECT * INTOを使うことで、SELECTした結果から表を作成することができるので、簡単にテーブル単位のバックアップ(複製)やテーブルコピーすることができる。システム運用や開発時のテストをしていると、更新前のテーブル状態をバックアップしておきたい時があるので、そういうシーン等では役に立つ方法である。
対応DB SqlServer PostgreSQL Access
テーブルコピー方法
SELECT INTO句でテーブルを作成することなく、テーブル作成とレコードをコピします。ただし、主キー、制約などは複製されないので、詳しくは以下の表を参照。
| コピーの対象 | |
|---|---|
| 列名 | 〇 |
| データ型 | 〇 |
| NULL | 〇 |
| 既定値 | × |
| 説明 | × |
| 主キー | × |
| 制約 | × |
| トリガー | × |
| インデックス | × |
構文
1、テーブル名:Employee(社員テーブル)
--列を指定してテーブルコピー
SELECT 列名,... INTO 作成する表名 FROM 作成元の表名
--テーブル定義と全レコードコピー
SELECT * INTO 作成する表名 FROM 作成元の表名サンプル
'サンプルテーブルのEmployeeを別のテーブルへバックアップする
SELECT * INTO Employee_bak FROM Employee
--サンプルテーブルのEmployee.社員IDと社員名の列とレコードを別のテーブルへバックアップする
SELECT member_id,member_name INTO Employee_bak FROM Employee

where句:コピーするレコードを絞る
構文
SELECT * INTO 作成する表名 FROM 作成元の表名 WHERE 抽出条件サンプル
--サンプルテーブルのEmployeeの男のレコードだけをコピーする
SELECT * INTO Employee_bak FROM Employee where member_gender = '男'


データをコピーしない
WHERE句にTrue(真)とならない条件をいれる。
構文
SELECT * INTO 作成する表名 FROM 作成元の表名 WHERE 1<>1サンプル
SELECT * INTO Employee_bak FROM Employee where 1<>1

