MySQLi - 臨時表



臨時表在某些情況下非常有用,可以用於儲存臨時資料。關於臨時表最重要的一點是,它們會在當前客戶端會話終止時被刪除。

如前所述,臨時表僅在會話有效期間存在。如果您在 PHP 指令碼中執行程式碼,則臨時表會在指令碼執行完畢後自動銷燬。如果您透過 MySQL 客戶端程式連線到 MySQL 資料庫伺服器,則臨時表將一直存在,直到您關閉客戶端或手動銷燬該表。

示例

這是一個顯示臨時表用法的示例。可以使用 `mysqli_query()` 函式在 PHP 指令碼中使用相同的程式碼。

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 TABLES 命令時,您的臨時表不會列在列表中。現在,如果您退出 MySQL 會話,然後發出 SELECT 命令,您將發現數據庫中沒有可用資料。您的臨時表也將不存在。

刪除臨時表

預設情況下,當您的資料庫連線終止時,所有臨時表都會被 MySQL 刪除。如果您想在此期間刪除它們,可以使用 DROP TABLE 命令。

以下是刪除臨時表的示例:

mysql> DROP TABLE SalesSummary;
mysql>  SELECT * FROM SalesSummary;
ERROR 1146: Table 'TUTORIALS.SalesSummary' doesn't exist
廣告