SQL でテーブルを別名でコピーする方法!簡単にデータを複製するテクニックを解説

こんにちは、阿久梨絵です!
SQL でデータベースを管理する際、既存のテーブルをコピーして別名(新しいテーブル)を作成したい という場面はよくあります。

例えば
バックアップ用にテーブルの複製を作成したい
実験・テスト用にオリジナルのデータを残しつつ新テーブルで試したい
一時的な処理のため、別の名前のテーブルを作りたい

SQL では、このような用途に対応できる 「テーブルのコピー」 の方法がいくつかあります!
この記事では、簡単なクエリから応用編まで わかりやすく解説します。

基本的なテーブルコピー方法

方法1: CREATE TABLE AS SELECT(データコピーあり)

既存のテーブルを新しい名前でコピーする方法

CREATE TABLE new_table AS
SELECT * FROM old_table;

このSQLを実行すると、「old_table」のデータと構造が「new_table」にコピーされます!

方法2: CREATE TABLE LIKE(構造のみコピー)

テーブルの構造(カラム定義・データ型)だけをコピーし、データは移動しない方法

CREATE TABLE new_table LIKE old_table;

この方法では、テーブルの「構造」だけをコピーするため、データは移行されません!
その後、必要なデータを追加することができます。

INSERT INTO new_table SELECT * FROM old_table;

応用編:条件付きでコピーする

カラムを絞ってコピー

特定のカラムだけをコピーする場合

CREATE TABLE new_table AS
SELECT id, name, email FROM old_table;

「id」「name」「email」だけを新しいテーブルにコピー!

条件を指定してデータをコピー

例えば、「価格が5000円以上の商品」だけをコピーしたい場合

CREATE TABLE new_table AS
SELECT * FROM old_table WHERE price > 5000;

「特定の条件を満たすデータのみ」を新しいテーブルへ移動できます!

テーブルコピー時の注意点

インデックスや制約はコピーされない場合がある → 手動で再設定が必要
外部キー制約を考慮する → 新しいテーブルが関連データと正しく動作するかチェック
ストレージの使用量に注意 → テーブルのコピーは大量データになる可能性がある

テーブルコピーを行う前に、インデックスや制約の扱いを確認しておくのがベスト!

まとめ

CREATE TABLE AS SELECT を使えば、データ付きのコピーが簡単に作成可能!
CREATE TABLE LIKE を使えば、構造だけをコピーして柔軟にカスタマイズ可能!
カラムを絞ったコピーや条件付きコピーで、データ管理の自由度がUP!
コピー時のインデックス・制約の扱いを事前に確認することが重要!

テーブルのコピーをマスターすれば、データベースの管理や試験環境の構築がスムーズになります!
阿久梨絵でした!

Verified by MonsterInsights