临时表在MySQL 3.23版本中添加,如果你的MySQL版本低于 3.23版本就无法利用MySQL的临时表。
不过现在一样平常很少有再利用这么低版本的MySQL数据库做事了。

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

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

php临时表MySQL 暂时表 Webpack

实例

以下展示了利用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

);

Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SalesSummary

-> (product_name, total_sales, avg_unit_price, total_units_sold)

-> VALUES

-> ('cucumber', 100.25, 90, 2);

mysql> SELECT FROM SalesSummary;

+--------------+-------------+----------------+------------------+

| product_name | total_sales | avg_unit_price | total_units_sold |

+--------------+-------------+----------------+------------------+

| cucumber | 100.25 | 90.00 | 2 |

+--------------+-------------+----------------+------------------+

1 row in set (0.00 sec)

当你利用 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

);

Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SalesSummary

-> (product_name, total_sales, avg_unit_price, total_units_sold)

-> VALUES

-> ('cucumber', 100.25, 90, 2);

mysql> SELECT FROM SalesSummary;

+--------------+-------------+----------------+------------------+

| product_name | total_sales | avg_unit_price | total_units_sold |

+--------------+-------------+----------------+------------------+

| cucumber | 100.25 | 90.00 | 2 |

+--------------+-------------+----------------+------------------+

1 row in set (0.00 sec)

mysql> DROP TABLE SalesSummary;

mysql> SELECT FROM SalesSummary;

ERROR 1146: Table 'RUNOOB.SalesSummary' doesn't exist

如您还有不明白的可以不才面与我留言或是与我磋商QQ群308855039,我们一起飞!