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