こんにちは、阿久梨絵です!
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!
・コピー時のインデックス・制約の扱いを事前に確認することが重要!
テーブルのコピーをマスターすれば、データベースの管理や試験環境の構築がスムーズになります!
阿久梨絵でした!