MySQLで既存テーブルと同じ構造のテーブルを自動的に作成する方法(CREATE TABLE ... LIKE)
MySQLでは、CREATE TABLE文にLIKEキーワードを組み合わせることで、既存のテーブルとまったく同じ構造(カラム定義、データ型、主キー、AUTO_INCREMENT属性など)を持つ新しいテーブルを簡単に作成できます。カラムを一つずつ手動で定義する必要がないため、テーブルの複製やバックアップ用テーブルの作成に非常に便利です。
基本構文
CREATE TABLE 新しいテーブル名 LIKE 既存のテーブル名;
この構文を実行すると、元のテーブルのカラム定義だけでなく、インデックスや主キー制約などの属性もそのまま引き継がれます。ただし、テーブル内のデータはコピーされない点に注意してください。データごと複製したい場合は、別途 INSERT INTO ... SELECT 文を使用する必要があります。
実行例
まず、従業員情報を管理する employee テーブルを作成し、その構造を確認してみましょう。
mysql> CREATE TABLE employee(ID INT PRIMARY KEY NOT NULL AUTO_INCREMENT, NAME VARCHAR(20)); Query OK, 0 rows affected (0.21 sec) mysql> DESCRIBE employee; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | NAME | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set (0.07 sec)
LIKEを使ったテーブル構造の複製
次のクエリを実行すると、employee テーブルと同じ構造を持つ employee1 テーブルが作成されます。
mysql> CREATE TABLE employee1 LIKE employee; Query OK, 0 rows affected (0.19 sec)
実際に構造が正しく複製されたかどうかは、DESCRIBE 文で確認できます。
mysql> DESCRIBE employee1; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | NAME | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set (0.14 sec)
出力結果を見ると、ID カラムの主キー(PRI)や AUTO_INCREMENT 属性まで含めて、元の employee テーブルと完全に同じ構造になっていることがわかります。
補足:注意点
- データはコピーされません — 構造のみが複製されます。データも移したい場合は
INSERT INTO employee1 SELECT * FROM employee;を実行します。 - 外部キー制約は引き継がれません — InnoDBの外部キー定義は
CREATE TABLE ... LIKEではコピーされないため、必要な場合は手動で再定義してください。 - インデックスや主キーは引き継がれます — 通常のインデックス、UNIQUE制約、主キーなどはそのまま複製されます。
このように、CREATE TABLE ... LIKE を使えば、わずか一行のSQLで既存テーブルと同一構造のテーブルを瞬時に作成できるため、開発やテスト環境の構築時にぜひ活用してください。
-
MySQLテーブルのカラム名を取得する方法【SHOW・DESCRIBE活用ガイド】
SHOWコマンドでカラム名を取得するMySQLでは、SHOWコマンドを使うことで、テーブルのカラム(列)名を簡単に確認できます。カラム名だけでなく、データ型やNULL許可、キー情報なども一緒に取得できるのが特徴です。基本構文show columns from テーブル名;サンプルテーブルの作成まず、動作確認用に「DemoTable」というテーブルを作成します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName varchar(
-
MySQLでテーブルの構造を複製する方法|LIKE句を使った手順を解説
MySQLで既存テーブルと同じ構造を持つ新しいテーブルを作成(複製)したい場合は、LIKE句を使用します。この記事では、実際にサンプルテーブルを作成しながら、テーブル構造を複製する具体的な手順をわかりやすく解説します。1. 元となるテーブルを作成するまずは複製元となるサンプルテーブルを作成しましょう。ここでは学生IDと学生名を格納するテーブルを定義します。mysql> create table DemoTable1-> (-> StudentId int,-> StudentName varchar(20)-> );Query OK, 0 rows affecte