W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
某些關(guān)系型數(shù)據(jù)庫管理系統(tǒng)支持臨時(shí)表。臨時(shí)表是一項(xiàng)很棒的特性,能夠讓你像操作普通的 SQL 數(shù)據(jù)表一樣,使用 SELECT、UPDATE 和 JOIN 等功能來存儲或者操作中間結(jié)果。
臨時(shí)表有時(shí)候?qū)τ诒4媾R時(shí)數(shù)據(jù)非常有用。有關(guān)臨時(shí)表你需要知道的最重要的一點(diǎn)是,它們會在當(dāng)前的終端會話結(jié)束后被刪除。
臨時(shí)表自 MySQL 3.23 起受到支持。如果你的 MySQL 版本比 3.23 還老,那么你就不能使用臨時(shí)表了,不過你可以使用堆表(heap table)。
如先前所言,臨時(shí)表只在會話期間存在。如果你在 PHP 腳本中操作數(shù)據(jù)庫,那么臨時(shí)表將在腳本執(zhí)行完畢時(shí)被自動(dòng)銷毀。如果你是通過 MySQL 的客戶端程序連接到 MySQL 數(shù)據(jù)庫服務(wù)器的,那么臨時(shí)表將會存在到你關(guān)閉客戶端或者手動(dòng)將其刪除。
下面的示例向你展示了如何使用臨時(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)你下達(dá) SHOW TABLES 命令的時(shí)候,臨時(shí)表是不會出現(xiàn)在結(jié)果列表當(dāng)中的?,F(xiàn)在,如果你退出 MySQL 會話,然后再執(zhí)行 SELECT 命令的話,你將不能從數(shù)據(jù)庫中取回任何數(shù)據(jù),你的臨時(shí)表也已經(jīng)不復(fù)存在了。
默認(rèn)情況下,所有的臨時(shí)表都由 MySQL 在數(shù)據(jù)庫連接關(guān)閉時(shí)刪除。不過,有時(shí)候你還是會想要在會話期間將其刪除,此時(shí)你需要使用 DROP TABLE 命令來達(dá)到目的。
下面是刪除臨時(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
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: