SQL臨時表
RDBMS有支持臨時表。 臨時表是一個偉大的功能,讓您存儲和使用如:選擇,更新過程中間結果,並加入功能,可以與典型的SQL Server表使用。
臨時表可能是非常有用的在某些情況下,以保持臨時數據。這應該被稱為臨時表的最重要的事情是,當當前客戶端會話終止,它們將被刪除。
臨時表可在MySQL版本3.23以上使用。如果你使用MySQL的舊版本比3.23,則不能使用臨時表,但可以使用堆表。
如前所述,臨時表將隻要會話持續就活著。如果在一個PHP腳本運行的代碼,當腳本執行完畢後,臨時表將被自動銷毀。如果您是通過MySQL客戶端程序連接到MySQL數據庫服務器, 那麼臨時表會一直存在,直到您關閉客戶端或者手動銷毀表。
例子:
下麵是一個例子,顯示臨時表的用法:
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> 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 'TUTORIALS.SALESSUMMARY' doesn't exist