MySQL 临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。
临时表在MySQL 3.23版本中添加,如果你的MySQL版本低于 3.23版本就无法使用MySQL的临时表。不过现在一般很少有再使用这么低版本的MySQL数据库服务了。
MySQL临时表只在当前连接可见,如果你使用PHP脚本来创建MySQL临时表,那每当PHP脚本执行完成后,该临时表也会自动销毁。
如果你使用了其他MySQL客户端程序连接MySQL数据库服务器来创建临时表,那么只有在关闭客户端程序时才会销毁临时表,当然你也可以手动销毁。
实例
以下展示了使用MySQL 临时表的简单实例,以下的SQL代码可以适用于PHP脚本的mysql_query()函数。
mysql>CREATETEMPORARYTABLESalesSummary( ->product_nameVARCHAR(50)NOTNULL ->,total_salesDECIMAL(12,2)NOTNULLDEFAULT0.00 ->,avg_unit_priceDECIMAL(7,2)NOTNULLDEFAULT0.00 ->,total_units_soldINTUNSIGNEDNOTNULLDEFAULT0); QueryOK,0rowsaffected(0.00sec) mysql>INSERTINTOSalesSummary ->(product_name,total_sales,avg_unit_price,total_units_sold) ->VALUES('cucumber',100.25,90,2); QueryOK,1rowaffected(0.00sec) mysql>SELECT*FROMSalesSummary; +--------------+-------------+----------------+------------------+ |product_name|total_sales|avg_unit_price|total_units_sold| +--------------+-------------+----------------+------------------+ |cucumber|100.25|90.00|2| +--------------+-------------+----------------+------------------+ 1rowinset(0.00sec)
当你使用 SHOW TABLES命令显示数据表列表时,你将无法看到 SalesSummary表。
如果你退出当前MySQL会话,再使用 SELECT命令来读取原先创建的临时表数据,那你会发现数据库中没有该表的存在,因为在你退出时该临时表已经被销毁了。
删除MySQL 临时表
默认情况下,当你断开与数据库的连接后,临时表就会自动被销毁。当然你也可以在当前MySQL会话使用 DROP TABLE 命令来手动删除临时表。
以下是手动删除临时表的实例:
mysql>SELECT*FROMSalesSummary; +--------------+-------------+----------------+------------------+ |product_name|total_sales|avg_unit_price|total_units_sold| +--------------+-------------+----------------+------------------+ |cucumber|100.25|90.00|2| +--------------+-------------+----------------+------------------+ 1rowinset(0.00sec) mysql>DROPTABLESalesSummary; QueryOK,0rowsaffected(0.00sec) mysql>SELECT*FROMSalesSummary; ERROR1146(42S02):Table'gtxyzz.salessummary'doesn'texist