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