在本教程中,您將學(xué)習(xí)如何使用SQL創(chuàng)建臨時(shí)表。
臨時(shí)表是僅對(duì)當(dāng)前會(huì)話可見(jiàn)的表,并且在關(guān)閉創(chuàng)建該表的會(huì)話時(shí)會(huì)自動(dòng)將其刪除。
因此,由于臨時(shí)表不會(huì)永久存儲(chǔ)在數(shù)據(jù)庫(kù)中,因此在您只需要短時(shí)間執(zhí)行或測(cè)試某些表,然后希望該表自動(dòng)消失的情況下,這將很有用。
CREATE TEMPORARY TABLE語(yǔ)句用于創(chuàng)建臨時(shí)表。
CREATE TEMPORARY TABLE table_name (column definitions);
如果要從頭開(kāi)始創(chuàng)建臨時(shí)表,則可以在創(chuàng)建表時(shí)使用關(guān)鍵字TEMPORARY,即使用CREATE TEMPORARY TABLE代替CREATE TABLE語(yǔ)句。有關(guān)完整的語(yǔ)法和示例,請(qǐng)參見(jiàn)“ 創(chuàng)建表”一章。
在您只想測(cè)試SQL查詢(xún)而不影響數(shù)據(jù)庫(kù)的情況下,臨時(shí)表可能會(huì)很有用。讓我們?cè)?a href="sql-create-database-statement.html">MySQL數(shù)據(jù)庫(kù)中創(chuàng)建現(xiàn)有表的臨時(shí)副本。
在MySQL命令提示符處鍵入以下命令,然后按Enter:
mysql> CREATE TEMPORARY TABLE persons SELECT * FROM persons;
上面的語(yǔ)句從現(xiàn)有基表persons的結(jié)果集中動(dòng)態(tài)創(chuàng)建一個(gè)名為persons的臨時(shí)表。另外,由于它是persons表的臨時(shí)副本,因此您可以執(zhí)行INSERT,UPDATE或者DELETE等任何操作,而不必?fù)?dān)心錯(cuò)誤地影響原始的persons基表。
提示:臨時(shí)表可以與永久基表具有相同的名稱(chēng)。如果您指定的臨時(shí)表的名稱(chēng)與現(xiàn)有基本表的名稱(chēng)相同,則永久基表將被隱藏,直到刪除該臨時(shí)表為止。
注意:由于臨時(shí)表是特定于會(huì)話的,因此兩個(gè)不同的會(huì)話可以使用相同的臨時(shí)表名稱(chēng),而不會(huì)彼此沖突。
臨時(shí)表在其創(chuàng)建所在的數(shù)據(jù)庫(kù)連接或會(huì)話關(guān)閉后會(huì)自動(dòng)刪除。但是,如果要?jiǎng)h除它們而不關(guān)閉當(dāng)前會(huì)話,則可以使用如下DROP TEMPORARY TABLE語(yǔ)句:
mysql> DROP TEMPORARY TABLE persons;
上面的語(yǔ)句將從persons數(shù)據(jù)庫(kù)中刪除臨時(shí)表。之后,原始persons基表將變?yōu)榭梢?jiàn)。