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を使えば、元テーブルの構造をそのまま引き継いだ新テーブルを一瞬で作成できます。バックアップテーブルやテスト用テーブルの準備など、構造だけを複製したい場面で非常に便利な機能ですので、ぜひ活用してみてください。
-
MySQLでAND・OR演算子を組み合わせた単一クエリを使って特定のレコードを取得する方法
MySQLでは、AND演算子とOR演算子をWHERE句で組み合わせることで、複数の条件を指定しながら特定のレコードを1つのクエリで取得できます。本記事では、実際にテーブルを作成し、データを挿入して、AND・ORを組み合わせたクエリの動作を確認していきます。 1. テーブルの作成 まず、CREATE TABLE文でサンプル用のテーブルを作成します。 mysql> create table DemoTable2015 -> ( -> StudentId int, -> StudentName varchar(20), -> Stude
-
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(