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

MySQLでクローンテーブルを作成する方法【手順とSQL例を解説】

データベースの運用では、既存のテーブルとまったく同じ構造を持つ複製(クローン)が必要になる場面があります。しかし、CREATE TABLE ... SELECT文を使う方法では、インデックスやデフォルト値などの属性が引き継がれないため、目的を満たせないことがあります。

そこで本記事では、インデックスやデフォルト値まで完全に一致したクローンテーブルを作成するための手順を、具体的なSQL例とともにわかりやすく解説します。

クローンテーブル作成の基本手順

MySQLで完全なクローンテーブルを作成するには、以下の3ステップを実行します。

  • SHOW CREATE TABLE文を使って、元テーブルの構造・インデックス・デフォルト値などを含むCREATE TABLE文を取得します。
  • 取得したCREATE TABLE文のテーブル名をクローン用の名前に変更して実行し、新しいテーブルを作成します。これで構造が完全に一致したテーブルが完成します。
  • 必要に応じて、INSERT INTO ... SELECT文を実行し、元テーブルのデータもコピーします。

実行例:tutorials_tblのクローンを作成する

ここでは、例として「tutorials_tbl」というテーブルのクローンを作成してみましょう。

ステップ1:テーブルの完全な構造を確認する

まず、SHOW CREATE TABLE文で元テーブルの定義全体を取得します。

mysql> SHOW CREATE TABLE tutorials_tbl \G;

*************************** 1. row ***************************
Table: tutorials_tbl
Create Table: CREATE TABLE `tutorials_tbl` (
    `tutorial_id` int(11) NOT NULL auto_increment,
    `tutorial_title` varchar(100) NOT NULL default '',
    `tutorial_author` varchar(40) NOT NULL default '',
    `submission_date` date default NULL,
    PRIMARY KEY (`tutorial_id`),
    UNIQUE KEY `AUTHOR_INDEX` (`tutorial_author`)
) TYPE = MyISAM
1 row in set (0.00 sec)
ERROR:
No query specified

ステップ2:テーブル名を変更して新規テーブルを作成する

次に、取得したCREATE TABLE文のテーブル名を「clone_tbl」に書き換えて実行します。

mysql> CREATE TABLE clone_tbl (
    -> tutorial_id int(11) NOT NULL auto_increment,
    -> tutorial_title varchar(100) NOT NULL default '',
    -> tutorial_author varchar(40) NOT NULL default '',
    -> submission_date date default NULL,
    -> PRIMARY KEY (tutorial_id),
    -> UNIQUE KEY AUTHOR_INDEX (tutorial_author)
    -> ) TYPE = MyISAM;
Query OK, 0 rows affected (1.80 sec)

この時点で、元テーブルと同じ構造(主キーやユニークキーを含む)を持つクローンテーブルがデータベース内に作成されています。

ステップ3:INSERT INTO ... SELECTでデータをコピーする

テーブルの内容(レコード)も複製したい場合は、INSERT INTO ... SELECT文を使ってデータを移します。

mysql> INSERT INTO clone_tbl (tutorial_id, tutorial_title, tutorial_author, submission_date)
    -> SELECT tutorial_id,tutorial_title,
    ->     tutorial_author,submission_date
    -> FROM tutorials_tbl;
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0

以上の手順で、構造もデータも元テーブルと完全に一致したクローンテーブルが完成します。CREATE TABLE ... LIKE文を使う方法もありますが、ストレージエンジンや文字コードの扱いに注意が必要なケースもあるため、確実なのはこの「SHOW CREATE TABLE → 書き換え → データコピー」の流れです。

  1. MySQLのビューからテーブルを作成する方法を徹底解説!基本構文と実行手順

    ビューからテーブルを作成する基本構文 MySQLでは、ビュー(VIEW)をもとに新しいテーブルを簡単に作成できます。基本となる構文は以下の通りです。 create table yourTableName select * from yourViewName; このように「CREATE TABLE ... SELECT」構文を使うことで、ビューの構造とデータをそのまま新しいテーブルへ复制できます。以下、具体的な手順を見ていきましょう。 ステップ1:サンプルテーブルを作成する まず、元となるテーブルを作成します。 mysql> create table DemoTable830(Name

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

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