Latest web development tutorials

MySQLの一時テーブル

我々はいくつかの一時的なデータを保存する必要がMySQLの一時テーブルは非常に便利です。 一時テーブルは、現在の接続、接続が閉じているとき、MySQLは自動的にテーブルを削除し、すべてのスペースを解放するに表示されます。

バージョン3.23よりもあなたのMySQLのバージョン以前は、一時テーブルのMySQLを使用できない場合、MySQLバージョン3.23での一時テーブルは、追加されます。 しかし、今、別のはほとんどのMySQLデータベースサーバーのような低いバージョンを使用していないがあります。

現在の接続でのみ表示さMySQLの一時テーブル、あなたがPHPスクリプトの実行が完了したときに、一時テーブルを作成するには、PHP、MySQLのスクリプトを使用する場合は、一時テーブルは自動的に破棄されます。

あなたはもちろん、クライアントプログラムは一時テーブルを破壊する閉じたときにのみ、その後、一時テーブルを作成するために、MySQLデータベースサーバーを接続するために他のMySQLクライアントプログラムを使用する場合は、手動で破棄することができます。

以下は、MySQLの一時テーブルの使用の簡単な例を示し、次のSQLコードは、PHPスクリプトするmysql_query()関数を適用することができます。

mysql> CREATE TEMPORARY TABLE SalesSummary (
    -> product_name VARCHAR(50) NOT NULL
    -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
    -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
    -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SalesSummary
    -> (product_name, total_sales, avg_unit_price, total_units_sold)
    -> VALUES
    -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)

あなたはSHOWテーブルがデータテーブルのリストを表示するコマンドを使用するときは、SalesSummary表は表示されません。

あなたは現在のMySQLセッションを終了した場合は、元々のデータを読み取るためにSELECTコマンドを使用して一時テーブルを作成し、その後、あなたが終了すると、一時テーブルが破棄されたため、データベースは、テーブルに存在しないことがわかります。


MySQLの一時テーブルを削除します。

あなたは、データベースへの接続を切断すると、デフォルトでは、一時テーブルは自動的に破棄されます。 もちろん、あなたも手動で現在のMySQLセッションでDROP TABLEコマンドを使用して、一時テーブルを削除することができます。

以下は、手動で一時テーブルの例を削除することです:

mysql> CREATE TEMPORARY TABLE SalesSummary (
    -> product_name VARCHAR(50) NOT NULL
    -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
    -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
    -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SalesSummary
    -> (product_name, total_sales, avg_unit_price, total_units_sold)
    -> VALUES
    -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
mysql> DROP TABLE SalesSummary;
mysql>  SELECT * FROM SalesSummary;
ERROR 1146: Table 'w3big.SalesSummary' doesn't exist