SQLでINSERT INTO SELECT文を使用してデータをコピーする方法

データベースで作業を行う上で、あるテーブルから別のテーブルにデータをコピーするケースは多々あります。SQLでこれを実現するには、INSERT INTO SELECT文が非常に便利です。この記事では、INSERT INTO SELECT文の基本的な使用方法から応用例まで詳しく解説します。

目次

何故INSERT INTO SELECT文を使用するのか

データベースでデータを管理する際、あるテーブルのデータを別のテーブルにコピーしたいというニーズはよくあります。このような場合に役立つのが、INSERT INTO SELECT文です。手作業でデータを移すよりも、この命令を使った方が効率的であり、エラーのリスクも低くなります。

INSERT INTO SELECT文の基本構文

基本的な構文は以下の通りです。

INSERT INTO target_table (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM source_table
WHERE condition;

この構文を使うことで、source_tableからtarget_tableにデータをコピーすることができます。

実践例:基本的な使用方法

以下は、`employees`テーブルから`backup_employees`テーブルにデータをコピーする基本的な例です。

INSERT INTO backup_employees (employee_id, name, position)
SELECT employee_id, name, position
FROM employees;

このSQL文を実行すると、`employees`テーブルの全てのデータが`backup_employees`テーブルにコピーされます。

条件を指定してコピー

WHERE句を使用して、特定の条件を満たすデータのみをコピーすることも可能です。

INSERT INTO backup_employees (employee_id, name, position)
SELECT employee_id, name, position
FROM employees
WHERE position = 'マネージャー';

データのマッピング

INSERT INTO SELECT文では、コピー元とコピー先のテーブルのカラム名が異なる場合も対応できます。

カラム名が異なる場合のマッピング

INSERT INTO backup_employees (backup_id, employee_name, job_position)
SELECT employee_id, name, position
FROM employees;

複数のテーブルからデータをコピー

JOINを使用して、複数のテーブルからデータをコピーすることもできます。

INSERT INTO project_summary (project_id, employee_name)
SELECT p.id, e.name
FROM projects p
JOIN employees e ON p.employee_id = e.employee_id;

まとめ

INSERT INTO SELECT文は、データベースでデータを効率よくコピーするための強力なツールです。基本的な使用方法から応用例まで、この命令を使いこなすことで、データベース操作がより簡単かつ効率的になります。

コメント

コメントする

目次