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

