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

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で既存テーブルと同一構造のテーブルを瞬時に作成できるため、開発やテスト環境の構築時にぜひ活用してください。

  1. 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(

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

    MySQLで既存テーブルと同じ構造を持つ新しいテーブルを作成(複製)したい場合は、LIKE句を使用します。この記事では、実際にサンプルテーブルを作成しながら、テーブル構造を複製する具体的な手順をわかりやすく解説します。1. 元となるテーブルを作成するまずは複製元となるサンプルテーブルを作成しましょう。ここでは学生IDと学生名を格納するテーブルを定義します。mysql> create table DemoTable1-> (-> StudentId int,-> StudentName varchar(20)-> );Query OK, 0 rows affecte