MySQL: 既存のテーブルをクエリを使って新しいテーブルに変換する方法
MySQLで既存のテーブル構造を基に新しいテーブルを作成する方法
CREATE TABLE ... LIKE 構文を使用する
この構文を使用すると、既存のテーブルの構造を空のテーブルとして複製できます。具体的には、以下の情報がコピーされます。
- カラム名
- データ型
- カラム属性(NOT NULL、デフォルト値など)
- インデックス
既存のテーブルの構造を基に新しいテーブルをすばやく簡単に作成する場合にこの方法は便利です。ただし、以下の点に注意する必要があります。
CREATE TABLE ... LIKE
で作成される新しいテーブルにはデータは含まれません。データは後からINSERT
ステートメントを使用して挿入する必要があります。- 外部キー制約はコピーされません。
例
既存のテーブル customers
の構造を基に新しいテーブル new_customers
を作成するには、次のコマンドを実行します。
CREATE TABLE new_customers LIKE customers;
SELECT ... INTO 構文を使用する
この構文を使用すると、既存のテーブルのデータと構造を新しいテーブルにコピーできます。
SELECT * INTO new_customers FROM customers;
この構文を使用すると、CREATE TABLE ... LIKE
よりも多くの情報が新しいテーブルにコピーされます。ただし、以下の点に注意する必要があります。
SELECT ... INTO
は、既存のテーブルと同じ数の行と列を持つ新しいテーブルを作成します。既存のテーブルにデータがない場合、新しいテーブルにもデータがない空のテーブルが作成されます。
使用する方法は、ニーズによって異なります。
- 既存のテーブルの構造のみをコピーしたい場合は、
CREATE TABLE ... LIKE
構文を使用します。 - 既存のテーブルのデータと構造を両方ともコピーしたい場合は、
SELECT ... INTO
構文を使用します。
MySQLでは、既存のテーブルの構造とデータを基に新しいテーブルを簡単に作成することができます。今回紹介した2つの方法を理解することで、状況に合わせて適切な方法を選択することができます。
CREATE TABLE ... LIKE 構文を使用する
-- 既存のテーブル `customers` の構造を基に新しいテーブル `new_customers` を作成する
CREATE TABLE new_customers LIKE customers;
-- 既存のテーブル `customers` のデータと構造を新しいテーブル `new_customers` にコピーする
SELECT * INTO new_customers FROM customers;
補足
- 既存のテーブルから特定の列のみを選択して新しいテーブルを作成するには、次のように
SELECT
句を変更します。
SELECT customer_id, first_name, last_name INTO new_customers FROM customers;
SELECT * INTO new_customers FROM customers WHERE active = 1;
今回紹介したサンプルコードを参考に、状況に合わせて適切な方法で新しいテーブルを作成してください。
MySQLで既存のテーブル構造を基に新しいテーブルを作成するその他の方法
この構文を使用すると、既存のテーブルのサブクエリ結果を基に新しいテーブルを作成できます。サブクエリは、既存のテーブルからデータを抽出したり、データを加工したりするために使用できます。
CREATE TABLE active_customers AS
SELECT * FROM customers WHERE active = 1;
MySQL WorkbenchなどのGUIツールを使用すると、視覚的なインターフェースを使用して新しいテーブルを作成できます。この方法は、コマンドラインインターフェースに慣れていないユーザーにとって便利です。
データベースマイグレーションツールを使用すると、異なるデータベースシステム間でデータを移行できます。このツールを使用して、既存のデータベースから新しいデータベースにテーブル構造をコピーすることもできます。
- 視覚的なインターフェースを使用して新しいテーブルを作成したい場合は、MySQL WorkbenchなどのGUIツールを使用します。
- 異なるデータベースシステム間でデータを移行したい場合は、データベースマイグレーションツールを使用します。
- データベースマイグレーションツールの使用方法については、使用しているツールのドキュメントを参照してください。
mysql