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

MySQLでテーブルの構造を複製する方法|LIKE句を使った手順を解説

MySQLで既存テーブルと同じ構造を持つ新しいテーブルを作成(複製)したい場合は、LIKE句を使用します。この記事では、実際にサンプルテーブルを作成しながら、テーブル構造を複製する具体的な手順をわかりやすく解説します。

1. 元となるテーブルを作成する

まずは複製元となるサンプルテーブルを作成しましょう。ここでは学生IDと学生名を格納するテーブルを定義します。

mysql> create table DemoTable1
-> (
-> StudentId int,
-> StudentName varchar(20)
-> );
Query OK, 0 rows affected (0.55 sec)

2. テーブルにデータを挿入する

INSERT文を使って、作成したテーブルにいくつかレコードを追加します。

mysql> insert into DemoTable1 values(100,'John');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable1 values(101,'Sam');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable1 values(102,'Carol');
Query OK, 1 row affected (0.15 sec)

3. データを確認する

SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認しましょう。

mysql> select * from DemoTable1;

実行結果

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 100 | John |
| 101 | Sam |
| 102 | Carol |
+-----------+-------------+
3 rows in set (0.00 sec)

4. LIKE句でテーブル構造を複製する

いよいよテーブル構造の複製です。CREATE TABLE 新しいテーブル名 LIKE 元のテーブル名; という構文を使用することで、カラム定義・データ型・インデックスなどを含めた構造をそのまま引き継いだ新しいテーブルを作成できます。

mysql> create table DemoTable2 LIKE DemoTable1;
Query OK, 0 rows affected (0.53 sec)

5. 複製したテーブルの構造を確認する

SHOW CREATE TABLE文を実行して、新しく作成したテーブルの構造を確認してみましょう。

mysql> show create table DemoTable2;

実行結果

+--------------+------------------------------------------------------------------------+
| Table | Create Table |
+--------------+------------------------------------------------------------------------+
| DemoTable2 | CREATE TABLE `demotable2` (`StudentId` int(11) DEFAULT NULL, |
| | `StudentName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL) |
| | ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
+--------------+------------------------------------------------------------------------+
1 row in set (0.03 sec)

このように、DemoTable2にはDemoTable1とまったく同じカラム定義や文字コード設定が引き継がれていることが確認できます。

注意点:LIKE句ではデータはコピーされない

LIKE句を使った複製では、あくまでテーブルの構造のみがコピーされ、元のテーブルに入っていたレコード(データ)は引き継がれません。構造とデータの両方をコピーしたい場合は、複製後に以下のようにINSERT INTO ... SELECT文を実行してください。

mysql> insert into DemoTable2 select * from DemoTable1;

まとめ

  • MySQLでテーブル構造を複製するには「CREATE TABLE ○○ LIKE △△;」を使用する
  • カラム定義・データ型・インデックスなどがそのまま引き継がれる
  • データ自体はコピーされないため、必要に応じてINSERT INTO ... SELECTを使う

バックアップ用テーブルの作成やテスト環境の準備など、LIKE句を活用するとテーブル操作の効率が大きく向上します。ぜひ活用してみてください。

  1. MySQLで月ごとにテーブルの値を合計する方法を解説

    MySQLでテーブル内の値を月ごとに合計したい場合は、EXTRACT()関数を使用します。この関数を使うことで、日付から特定の月の情報を抽出できます。例えば、年に関係なく1月のすべての価格を合計したい場合などに便利です。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1415 -> ( -> ProductPurchaseDate date, -> ProductPrice int -> ); Query OK, 0 rows affected (0.53 se

  2. MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方

    MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ