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
実行結果
実行結果
実行結果
レコードが0件

サンプルテーブル情報

1、テーブル名:Employee(社員テーブル)

 社員の情報を管理するテーブル

属性名
カラム名
社員ID
member_id
社員名
member_name
社員名かな
member_namekana
年齢
member_age
性別
member_gender
入社日
join_company
所属部門
dept
1佐藤 太郎さとう たろう222020/04/01営業部
2田中 花子たなか はなこ302020/12/31製造部
3鈴木 次郎すずき じろう452000/05/25総務部
4西田 梅子にしだ うめこ232019/09/01販売部
サンプルテーブル