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 表的临时副本,因此你可以执行任何操作,比如 INSERT
、UPDATE
或 DELETE
,不必担心错误地影响原始 persons 基表。
提示: 临时表可以与永久基表同名。如果指定与现有基表相同的临时表的名称,则永久基表将被隐藏,直到删除临时表为止。
注意: 由于临时表是特定于会话的,因此两个不同的会话可以使用相同的临时表名,而不会相互冲突。
删除临时表
临时表在创建它们的数据库连接或会话关闭时自动删除。但是,如果要在不关闭当前会话的情况下删除它们,则可以使用 DROP TEMPORARY TABLE
语句,如下所示:
mysql> DROP TEMPORARY TABLE persons;
上述语句将从数据库中删除临时表 persons。之后,原始 persons 基表变得可见。