SQL 临时表

在本教程中,您将学习如何使用SQL创建临时表。

创建临时表

临时表是仅对当前会话可见的表,并且在关闭创建该表的会话时会自动将其删除。

因此,由于临时表不会永久存储在数据库中,因此在您只需要短时间执行或测试某些表,然后希望该表自动消失的情况下,这将很有用。

语法

CREATE TEMPORARY TABLE语句用于创建临时表。

CREATE TEMPORARY TABLE table_name (column definitions);

如果要从头开始创建临时表,则可以在创建表时使用关键字TEMPORARY,即使用CREATE TEMPORARY TABLE代替CREATE TABLE语句。有关完整的语法和示例,请参见“ 创建表”一章。

创建现有表的临时副本

在您只想测试SQL查询而不影响数据库的情况下,临时表可能会很有用。让我们在MySQL数据库中创建现有表的临时副本。

在MySQL命令提示符处键入以下命令,然后按Enter:

mysql> CREATE TEMPORARY TABLE persons SELECT * FROM persons;

上面的语句从现有基表persons的结果集中动态创建一个名为persons的临时表。另外,由于它是persons表的临时副本,因此您可以执行INSERTUPDATE或者DELETE等任何操作,而不必担心错误地影响原始的persons基表。

提示:临时表可以与永久基表具有相同的名称。如果您指定的临时表的名称与现有基本表的名称相同,则永久基表将被隐藏,直到删除该临时表为止。

注意:由于临时表是特定于会话的,因此两个不同的会话可以使用相同的临时表名称,而不会彼此冲突。

删除临时表

临时表在其创建所在的数据库连接或会话关闭后会自动删除。但是,如果要删除它们而不关闭当前会话,则可以使用如下DROP TEMPORARY TABLE语句:

mysql> DROP TEMPORARY TABLE persons;

上面的语句将从persons数据库中删除临时表。之后,原始persons基表将变为可见。