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