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
サンプルテーブル情報
1、テーブル名:Employee(社員テーブル)
社員の情報を管理するテーブル
属性名 カラム名 | 社員ID member_id | 社員名 member_name | 社員名かな member_namekana | 年齢 member_age | 性別 member_gender | 入社日 join_company | 所属部門 dept |
---|---|---|---|---|---|---|---|
1 | 佐藤 太郎 | さとう たろう | 22 | 男 | 2020/04/01 | 営業部 | |
2 | 田中 花子 | たなか はなこ | 30 | 女 | 2020/12/31 | 製造部 | |
3 | 鈴木 次郎 | すずき じろう | 45 | 男 | 2000/05/25 | 総務部 | |
4 | 西田 梅子 | にしだ うめこ | 23 | 女 | 2019/09/01 | 販売部 |