mysql临时表

MySQL临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。

临时表在MySQL 3.23版本中添加,如果你的MySQL版本低于3.23版本就无法使用MySQL的临时表。不过现在一般很少有再使用这么低版本的MySQL 数据库服务了。

MySQL的临时表只在当前连接可见,如果你使用PHP脚本来创建MySQL的临时表,那没当PHP脚本执行完成后,该临时表也会自动销毁。

如果你使用了其他的MySQL客户端程序连接MySQL的数据库服务器来创建临时表,那么只有在关闭客户端程序时才会销毁临时表,当然你也可以手动销毁。

实例

以下展示了使用MySQL临时表的简单实例,以下的SQL代码可以适用于PHP脚本的mysql _query()函数。

mysql> CREATE TEMPORARY TABLE SalesSummary(
    - > product_name VARCHAR(50)NOT NULL
    - >,total_sales DECIMAL(12,2)NOT NULL DEFAULT 0.00
    - >,avg_unit_price DECIMAL(7,2)NOT NULL DEFAULT 0.00
    - >,total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
查询OK,0行受影响(0.00秒)

mysql> INSERT INTO SalesSummary
    - >(product_name,total_sales,avg_unit_price,total_units_sold)
    - >值
    - >('黄瓜',100.25,90,2);

mysql> SELECT * FROM SalesSummary;
+ -------------- + ------------- + ---------------- + --- --------------- +
| product_name | total_sales | avg_unit_price | total_units_sold |
+ -------------- + ------------- + ---------------- + --- --------------- +
| 黄瓜| 100.25 | 90.00 | 2 |
+ -------------- + ------------- + ---------------- + --- --------------- +
1排(0.00秒)

当你使用SHOW TABLES命令显示数据表列表时,你将无法看到SalesSummary表。

如果你退出当前MySQL会话,再使用SELECT命令来读取原创创建的临时表数据,那你会发现数据库中没有该表的存在,因为在你退出时该临时表已经被销毁了。


删除MySQL临时表

默认情况下,当你断开与数据库的连接后,临时表就会自动被销毁。当然你也可以在当前MySQL会话使用DROP TABLE命令来手动删除临时表。

以下是手动删除临时表的实例:

mysql> CREATE TEMPORARY TABLE SalesSummary(
    - > product_name VARCHAR(50)NOT NULL
    - >,total_sales DECIMAL(12,2)NOT NULL DEFAULT 0.00
    - >,avg_unit_price DECIMAL(7,2)NOT NULL DEFAULT 0.00
    - >,total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
查询OK,0行受影响(0.00秒)

mysql> INSERT INTO SalesSummary
    - >(product_name,total_sales,avg_unit_price,total_units_sold)
    - >值
    - >('黄瓜',100.25,90,2);

mysql> SELECT * FROM SalesSummary;
+ -------------- + ------------- + ---------------- + --- --------------- +
| product_name | total_sales | avg_unit_price | total_units_sold |
+ -------------- + ------------- + ---------------- + --- --------------- +
| 黄瓜| 100.25 | 90.00 | 2 |
+ -------------- + ------------- + ---------------- + --- --------------- +
1排(0.00秒)
mysql> DROP TABLE SalesSummary;
mysql> SELECT * FROM SalesSummary;
错误1146:表“RUNOOB.SalesSummary”不存在


nickname
content