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句を活用するとテーブル操作の効率が大きく向上します。ぜひ活用してみてください。
-
MySQLで月ごとにテーブルの値を合計する方法を解説
MySQLでテーブル内の値を月ごとに合計したい場合は、EXTRACT()関数を使用します。この関数を使うことで、日付から特定の月の情報を抽出できます。例えば、年に関係なく1月のすべての価格を合計したい場合などに便利です。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1415 -> ( -> ProductPurchaseDate date, -> ProductPrice int -> ); Query OK, 0 rows affected (0.53 se
-
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コマンドを使ってテ