こんにちは、阿久梨絵です!
INSERT SELECT は、別のテーブルのデータを利用して新しいテーブルへデータを挿入する SQL 構文 です。
通常の INSERT では、値を直接指定してレコードを追加しますが、INSERT SELECT を使うと 既存のデータをコピー&移行 できます。
簡単に言えば、「別のテーブルのデータをそのまま新しいテーブルに追加する」ための便利な手法!
INSERT SELECTの基本的な使い方
基本構文
INSERT INTO new_table (column1, column2, column3)
SELECT column1, column2, column3 FROM old_table;
「old_table」のデータをそのまま「new_table」にコピー!
条件を指定してデータを移行
特定の条件を満たすデータだけを挿入できます。
INSERT INTO new_table (id, name, price)
SELECT id, name, price FROM old_table WHERE price > 5000;
「price が 5000 円以上のデータのみ」を新テーブルへ移動!
列の加工・変更
データをコピーしながら、列の値を変更することも可能
INSERT INTO new_table (id, full_name, created_at)
SELECT id, CONCAT(first_name, ‘ ‘, last_name), NOW()
FROM old_table;
「氏名を連結」「現在の日時を追加」など、加工しながらデータ移行!
INSERT SELECTを使う場面
・テーブル構造を変更したとき → 新しいテーブルへデータ移行
・データのバックアップ作成 → 既存のデータを別のテーブルへ保存
・条件付きデータ移行 → 必要なデータだけを抽出してコピー
・大量データの一括登録 → 既存データを活用して効率よく新規登録
手動入力ではなく「SELECT結果」をそのままコピーできるので、大量データの処理が圧倒的に楽になります!
実際に使う際の注意点
・データ型を一致させる → SELECT するカラムと INSERT 先のカラムが適合するか確認
・NULL値の扱いに注意 → COALESCE() を使ってデフォルト値を設定
・制約違反のチェック → UNIQUE や NOT NULL 制約が適用されている場合、移行前に確認
・大量データの場合はパフォーマンス最適化 → INDEX や BULK INSERT との併用が有効
まとめ
・INSERT SELECTを使えば、既存データを簡単に別のテーブルへコピー・移行できる!
・条件付き移行やデータ加工を組み合わせれば、柔軟なデータ操作が可能!
・実行前にデータ型や制約の確認を行い、スムーズな移行を実現!
データベースの管理・移行を効率化するには、INSERT SELECTをぜひ活用しましょう!
阿久梨絵でした!