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

MySQLでテーブルの結果を一時テーブルに表示・保存する方法

MySQLでは、CREATE TEMPORARY TABLE文とSELECT文を組み合わせることで、既存テーブルのクエリ結果をそのまま一時テーブルに保存できます。一時テーブルはセッション中のみ有効で、接続が切れると自動的に削除されるため、作業用データの退避や中間集計などに便利です。

この記事では、実際のサンプルを使って、通常のテーブルから一時テーブルを作成し、結果を表示する手順を解説します。

1. 元となるテーブルを作成する

まず、サンプル用のテーブル「DemoTable1」を作成します。Id(整数型)とName(可変長文字列)の2つのカラムを定義します。

mysql> create table DemoTable1 (Id int,Name varchar(100));
Query OK, 0 rows affected (0.89 sec)

2. テーブルにレコードを挿入する

INSERTコマンドを使って、作成したテーブルに複数のレコードを追加します。

mysql> insert into DemoTable1 values(100,'John');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1 values(110,'Chris');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1 values(120,'Robert');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1 values(130,'David');
Query OK, 1 row affected (0.14 sec)

3. テーブルの全レコードを確認する

SELECT文で、挿入したすべてのレコードを表示して確認します。

mysql> select *from DemoTable1;

実行すると、次のような出力が得られます。

+------+--------+
| Id   | Name   |
+------+--------+
|  100 | John   |
|  110 | Chris  |
|  120 | Robert |
|  130 | David  |
+------+--------+
4 rows in set (0.00 sec)

4. テーブルの結果を一時テーブルにコピーする

ここが本題です。CREATE TEMPORARY TABLE文の後にSELECT文を続けて記述すると、元テーブルの全データを一時テーブル「DemoTable2」へ一度にコピーできます。

mysql> create temporary table DemoTable2
   select *from DemoTable1;
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0

実行結果を見ると、「Records: 4」と表示されており、4件のレコードが正常にコピーされたことがわかります。

5. 一時テーブルの中身を確認する

最後に、一時テーブルのレコードをSELECT文で表示してみましょう。

mysql> select *from DemoTable2;

出力は以下の通りです。元テーブルと同じデータが格納されていることが確認できます。

+------+--------+
| Id   | Name   |
+------+--------+
|  100 | John   |
|  110 | Chris  |
|  120 | Robert |
|  130 | David  |
+------+--------+
4 rows in set (0.00 sec)

補足:一時テーブルの特徴と注意点

  • セッション単位で有効: 一時テーブルは作成したセッション(接続)内でのみ参照でき、他のセッションからは見えません。
  • 自動削除: セッションが終了すると自動的に削除されるため、後片付けの手間がありません。明示的に削除したい場合はDROP TEMPORARY TABLEを使用します。
  • 同名テーブルとの共存: 通常のテーブルと同じ名前の一時テーブルを作成した場合、セッション内では一時テーブルが優先されます。
  • WHERE句や絞り込みも可能: select * from DemoTable1 where Id > 110; のように条件を付ければ、必要な行だけを一時テーブルにコピーすることもできます。

このように、CREATE TEMPORARY TABLE ... SELECT構文を使えば、わずか1文でテーブルの結果を一時テーブルに複製できます。大量データの中間処理やレポート作成時にぜひ活用してください。

  1. Javaを使用してMySQLテーブルの値を表示する方法

    MySQLデータベースのテーブル値をJavaで表示するには、ResultSetの概念を利用します。データベースへの接続には、MySQL JDBCドライバーを使用します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo87    -> (    -> name varchar(20),    -> age int    -> )  

  2. 【Spring Boot】HibernateでMySQLのテーブルを自動作成する方法

    Spring BootとHibernateを組み合わせると、エンティティクラスから自動的にMySQLのテーブルを作成できます。本記事では、application.propertiesの設定だけでテーブルを自動生成する手順を、実際のコード例とともにわかりやすく解説します。1. application.propertiesの設定テーブルを自動作成するには、まずapplication.propertiesに以下の1行を追加します。spring.jpa.hibernate.ddl-auto=updateddl-auto=updateを指定すると、アプリケーションの起動時にHibernateがエンティテ