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

MySQLのLIKE句を使って元テーブルと同じ構造(プロパティ)を持つ新規テーブルを作成する方法

MySQLでは、LIKE句を使うことで、既存のテーブルとまったく同じカラム定義(プロパティ)を持つ新しいテーブルを簡単に作成できます。構文は以下のとおりです。

CREATE TABLE 作成するテーブル名 LIKE 元となるテーブル名;

実際にどのように動作するのか、サンプルテーブルを作りながら確認していきましょう。

サンプルテーブルの作成

まず、動作確認用に「Employee」というテーブルを作成します。

mysql> create table Employee
-> (
    -> EmployeeId int,
    -> EmployeeName varchar(100)
-> );
Query OK, 0 rows affected (0.54 sec)

レコードの挿入

次に、INSERT文を使ってテーブルにデータを登録します。

mysql> insert into Employee values(1,'Carol');
Query OK, 1 row affected (0.18 sec)

mysql> insert into Employee values(2,'John');
Query OK, 1 row affected (0.16 sec)

mysql> insert into Employee values(3,'Johnson');
Query OK, 1 row affected (0.11 sec)

SELECT文で登録内容を確認しておきましょう。

mysql> select *from Employee;

出力結果:

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
|          1 |        Carol |
|          2 |         John |
|          3 |      Johnson |
+------------+--------------+
3 rows in set (0.00 sec)

LIKE句で同じ構造の新規テーブルを作成する

ここで、冒頭で紹介した構文を実行し、Employeeテーブルと同じ構造を持つ新しいテーブル「StudentModifyTableDemo」を作成します。

mysql> create table StudentModifyTableDemo Like Employee;
Query OK, 0 rows affected (0.50 sec)

テーブル定義の確認

DESCコマンドを使えば、新しく作成したテーブルの定義が元のテーブルと同一であることを確認できます。

mysql> desc StudentModifyTableDemo;

出力結果:

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| EmployeeId   | int(11)      | YES  |     | NULL    |       |
| EmployeeName | varchar(100) | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+
2 rows in set (0.12 sec)

カラム名やデータ型まで、元のEmployeeテーブルと完全に一致していることがわかります。

元テーブルのデータをコピーする

続いて、Employeeテーブルの全レコードをStudentModifyTableDemoへ挿入します。INSERT INTO ... SELECT文を組み合わせるのがポイントです。

mysql> insert into StudentModifyTableDemo select *from Employee;
Query OK, 3 rows affected (0.16 sec)
Records: 3 Duplicates: 0 Warnings: 0

実行結果の「Duplicates: 0」から、重複データなしで3件すべてのレコードが正しくコピーされたことが確認できます。

最終結果の確認

最後に、新テーブルの中身を見てみましょう。

mysql> select *from StudentModifyTableDemo;

出力結果:

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
|          1 |        Carol |
|          2 |         John |
|          3 |      Johnson |
+------------+--------------+
3 rows in set (0.00 sec)

このように、CREATE TABLE ... LIKEを使えば、元テーブルの構造をそのまま引き継いだ新テーブルを一瞬で作成できます。バックアップテーブルやテスト用テーブルの準備など、構造だけを複製したい場面で非常に便利な機能ですので、ぜひ活用してみてください。

  1. MySQLでAND・OR演算子を組み合わせた単一クエリを使って特定のレコードを取得する方法

    MySQLでは、AND演算子とOR演算子をWHERE句で組み合わせることで、複数の条件を指定しながら特定のレコードを1つのクエリで取得できます。本記事では、実際にテーブルを作成し、データを挿入して、AND・ORを組み合わせたクエリの動作を確認していきます。 1. テーブルの作成 まず、CREATE TABLE文でサンプル用のテーブルを作成します。 mysql> create table DemoTable2015 -> ( -> StudentId int, -> StudentName varchar(20), -> Stude

  2. MySQLでDEFAULTキーワードを使ってデフォルト値を設定したテーブルを作成する方法

    MySQLでは、テーブル作成時にカラムのデータ型の後にDEFAULTキーワードを指定することで、そのカラムにデフォルト値を設定できます。INSERT文で値が指定されなかった場合、自動的にこのデフォルト値が適用されます。テーブルの作成例それでは、実際にデフォルト値を持つテーブルを作成してみましょう。mysql> create table demo33 -> ( -> id int not null auto_increment primary key, -> name varchar(20) not null, -> start_date date default(