MySQL 临时表

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

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

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

如果使用其他MySQL客户端程序连接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
);
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

克隆创建临时表

用查询直接创建临时表的方式:

CREATE TEMPORARY TABLE 临时表名 AS
(
    SELECT *  FROM 旧的表名
    LIMIT 0,10000
);

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/24/mysql-temporary-table/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
MySQL 临时表
MySQL临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。 临时表在MySQL 3.23版本……
<<上一篇
下一篇>>
文章目录
关闭
目 录