SQL 临时表

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

创建临时表

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

因为临时表没有永久存储在数据库中,所以在需要表只能在很短的时间内执行或测试某些东西的情况下,它会非常有用,之后你希望它自动消失。

语法

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

CREATE TEMPORARY TABLE table_name ( column definitions ); 

如果要从头创建临时表,可以在创建表时使用 TEMPORARY 关键字,即使用 CREATE TEMPORARY TABLE 而不是使用 CREATE TABLE 语句。有关完整的语法和示例,请参阅 create table 一章。

创建现有表的临时副本

在你只想测试 SQL 查询而不影响数据库的情况下,临时表非常有用。让我们在 MySQL 数据库中创建一个现有表的临时副本。

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

mysql> CREATE TEMPORARY TABLE persons SELECT * FROM persons; 

上面的语句从现有基表 persons 的结果集创建了一个名为 persons 的临时表。此外,由于它是 persons 表的临时副本,因此你可以执行任何操作,比如 INSERTUPDATEDELETE ,不必担心错误地影响原始 persons 基表。

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

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

删除临时表

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

mysql> DROP TEMPORARY TABLE persons; 

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