MySQLのLIKE句を使って通常のテーブルと同じ構造の一時テーブルを作成する方法
MySQLでは、CREATE TEMPORARY TABLE ... LIKE構文を使うことで、既存の通常テーブルとまったく同じ構造(カラム定義、主キー、AUTO_INCREMENT設定など)を持つ一時テーブルを簡単に作成できます。この記事では、その具体的な手順をサンプルコードとともに解説します。
1. 元となるテーブルを作成する
まず、CREATE TABLE文でサンプル用のテーブルを作成します。
mysql> create table DemoTable1
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(100)
);
Query OK, 0 rows affected (0.59 sec)
ここでは、自動採番されるIdカラム(主キー)と、Nameカラムを持つテーブル「DemoTable1」を作成しました。
2. テーブルにレコードを挿入する
次に、INSERT文を使ってテーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable1(Name) values('Chris');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1(Name) values('Robert');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1(Name) values('Mike');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1(Name) values('Sam');
Query OK, 1 row affected (0.07 sec)
3. 挿入したレコードを確認する
SELECT文でテーブル内のすべてのレコードを表示して確認しましょう。
mysql> select *from DemoTable1;
実行すると、次のような結果が出力されます。
+----+--------+ | Id | Name | +----+--------+ | 1 | Chris | | 2 | Robert | | 3 | Mike | | 4 | Sam | +----+--------+ 4 rows in set (0.00 sec)
4. LIKE句を使って一時テーブルを作成する
ここがこの記事のポイントです。次のクエリを実行すると、通常テーブル「DemoTable1」と同じ構造を持つ一時テーブル「DemoTable2」を作成できます。
mysql> create temporary table DemoTable2 like DemoTable1; Query OK, 0 rows affected (0.04 sec)
LIKE句を使用することで、元テーブルのカラム定義やインデックス情報がそのまま引き継がれます。なお、一時テーブルにはデータはコピーされず、構造のみが複製される点に注意してください。
5. 一時テーブルの構造を確認する
DESCコマンドで作成した一時テーブルの構造を確認してみましょう。
mysql> desc DemoTable2;
実行結果は以下のとおりです。
+-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(100) | YES | | NULL | NULL | +-------+--------------+------+-----+---------+----------------+ 2 rows in set (0.04 sec)
このように、元テーブルと同じId(AUTO_INCREMENT付き主キー)とNameカラムが定義された一時テーブルが作成されていることがわかります。
まとめ
CREATE TEMPORARY TABLE テーブル名 LIKE 元テーブル名;と記述するだけで、既存テーブルと同一構造の一時テーブルを作成できます。一時テーブルはセッションが終了すると自動的に削除されるため、一時的なデータ処理やテスト用途に非常に便利です。データまでコピーしたい場合は、INSERT INTO ... SELECTを組み合わせて使用するとよいでしょう。
-
JavaのPreparedStatementを使ってMySQLテーブルを更新する方法
JavaからMySQLのテーブルを更新するには、PreparedStatementを使用するのが一般的で安全な方法です。PreparedStatementを使うことで、SQLインジェクションを防ぎつつ、パラメータを動的に設定できます。この記事では、実際にテーブルを作成し、Javaプログラムからレコードを更新するまでの一連の手順を解説します。1. テーブルの作成まず、MySQLで更新用のテーブルを作成しましょう。mysql> create table DemoTable( Id int, FirstName varchar(40) ); Query OK, 0 rows a
-
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(