RDBMS有支持臨時表。 臨時表是一個偉大的功能,讓您存儲和使用如:選擇,更新過程中間結(jié)果,并加入功能,可以與典型的SQL Server表使用。
臨時表可能是非常有用的在某些情況下,以保持臨時數(shù)據(jù)。這應(yīng)該被稱為臨時表的最重要的事情是,當當前客戶端會話終止,它們將被刪除。
臨時表可在MySQL版本3.23以上使用。如果你使用MySQL的舊版本比3.23,則不能使用臨時表,但可以使用堆表。
如前所述,臨時表將只要會話持續(xù)就活著。如果在一個PHP腳本運行的代碼,當腳本執(zhí)行完畢后,臨時表將被自動銷毀。如果您是通過MySQL客戶端程序連接到MySQL數(shù)據(jù)庫服務(wù)器, 那么臨時表會一直存在,直到您關(guān)閉客戶端或者手動銷毀表。
下面是一個例子,顯示臨時表的用法:
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)
當你發(fā)出一個SHOW TABLES命令,臨時表不會被列在列表中。現(xiàn)在,如果注銷MySQL的會話,然后發(fā)出SELECT命令,這時你會發(fā)現(xiàn)在數(shù)據(jù)庫中沒有可用的數(shù)據(jù)。 臨時表也就不存在了。
默認情況下,當你的數(shù)據(jù)庫連接被終止,所有的臨時表被MySQL刪除。您如果還是想要刪除的他們,那么可發(fā)出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