MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで別のテーブルと同じ構造のテーブルを作成する方法

MySQLで別テーブルと一致するテーブルを作成するには?

MySQLで既存のテーブルと同じ構造を持つ新しいテーブルを作成したい場合、CREATE TABLEコマンドにLIKE演算子を組み合わせて使用します。構文は以下の通りです。

create table 新しいテーブル名 like 元のテーブル名;

この構文では、元のテーブルの構造(カラム定義、データ型、インデックスなど)のみがコピーされます。データはコピーされない点に注意してください。

データも含めてコピーする方法

テーブルの構造だけでなく、すべてのレコードも一緒にコピーしたい場合は、INSERT INTO ... SELECT * FROMコマンドを使用します。構文は以下の通りです。

insert into 新しいテーブル名 select * from 元のテーブル名;

実際の使用例

ここでは、サンプルとして「WholeWordMatchDemo」というテーブルを作成し、いくつかのデータを格納します。

mysql> create table WholeWordMatchDemo
   -> (
   -> Words varchar(200)
   -> );
Query OK, 0 rows affected (0.84 sec)

ステップ1:テーブル構造を複製する

まず、LIKE演算子を使って元のテーブルと同じ構造を持つ新しいテーブルを作成します。

mysql> create table NewTableDuplicate Like WholeWordMatchDemo;
Query OK, 0 rows affected (0.62 sec)

SHOW CREATE TABLEコマンドを実行すると、テーブル構造が正しく作成されたかどうかを確認できます。

mysql> show create table NewTableDuplicate;

実行結果は以下の通りです。

+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Table             | Create Table                                                                                                                                |
+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| NewTableDuplicate | CREATE TABLE `newtableduplicate` (`Words` varchar(200) DEFAULT NULL) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
+-------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

このように、カラム定義や文字セットなど、元のテーブルと完全に同じ構造が複製されていることが確認できます。

ステップ2:データを新しいテーブルにコピーする

次に、「NewTableDuplicate」という新しいテーブルへ、元のテーブルの全レコードを挿入します。

mysql> insert into NewTableDuplicate select *from WholeWordMatchDemo;
Query OK, 3 rows affected (0.19 sec)
Records: 3 Duplicates: 0 Warnings: 0

SELECT文を使って、新しいテーブルにすべてのレコードが正しくコピーされたか確認しましょう。

mysql> select *from NewTableDuplicate;

実行結果:

+----------------------+
| Words                |
+----------------------+
| My Name is John      |
| Carol                |
| My Name is Johnson   |
+----------------------+
3 rows in set (0.00 sec)

ステップ3:元のテーブルとの整合性を確認する

念のため、元のテーブルにも同じレコードが存在することを確認します。

mysql> select *from WholeWordMatchDemo;

実行結果:

+----------------------+
| Words                |
+----------------------+
| My Name is John      |
| Carol                |
| My Name is Johnson   |
+----------------------+
3 rows in set (0.00 sec)

まとめ

MySQLで別のテーブルと一致するテーブルを作成する手順は、以下の2段階です。

  • 構造のみをコピーする場合CREATE TABLE 新テーブル LIKE 元テーブル;
  • データも含めてコピーする場合INSERT INTO 新テーブル SELECT * FROM 元テーブル;

LIKEを使う方法は、バックアップテーブルの作成やテスト環境の構築などに非常に便利です。なお、外部キー制約などの詳細な定義まで完全に複製したい場合は、SHOW CREATE TABLEでDDLを取得して実行する方法も検討するとよいでしょう。

  1. MySQLで日付(DATETIME型)を使った一時テーブルを作成する方法

    MySQLで日付を扱う一時テーブルを作成するには、CREATE TEMPORARY TABLE文を使用します。一時テーブルはセッションが終了すると自動的に削除されるため、一時的なデータの保存や計算用途に非常に便利です。基本構文DATETIME型のカラムを持つ一時テーブルは、以下の構文で作成できます。CREATE TEMPORARY TABLE テーブル名(    カラム名 DATETIME);実際に一時テーブルを作成してみようまず、「DueDate」というDATETIME型カラムを持つ一時テーブル「DemoTable」を作成します。mysql> C

  2. MySQLでインデックス付きのテーブルを作成する方法を徹底解説

    MySQLでは、テーブル作成後にCREATE INDEX文を使うことで、特定のカラムに対してインデックスを追加できます。検索速度の向上やデータ整合性の確保において、インデックスは非常に重要な役割を果たします。この記事では、基本的な構文から実際の実行例まで、順を追ってわかりやすく解説します。インデックス付きテーブルを作成する基本構文まずテーブルを作成し、その後CREATE INDEX文でインデックスを追加します。基本の構文は以下のとおりです。create table yourTableName ( yourColumnName1 dataType, yourColumnName2 dataTyp