RDBMS有支持临时表。 临时表是一个伟大的功能,让您存储和使用如:选择,更新过程中间结果,并加入功能,可以与典型的SQL Server表使用。
临时表可能是非常有用的在某些情况下,以保持临时数据。这应该被称为临时表的最重要的事情是,当当前客户端会话终止,它们将被删除。
临时表可在MySQL版本3.23以上使用。如果你使用MySQL的旧版本比3.23,则不能使用临时表,但可以使用堆表。
如前所述,临时表将只要会话持续就活着。如果在一个php脚本运行的代码,当脚本执行完毕后,临时表将被自动销毁。如果您是通过MySQL客户端程序连接到MySQL数据库服务器, 那么临时表会一直存在,直到您关闭客户端或者手动销毁表。
下面是一个例子,显示临时表的用法:
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命令,临时表不会被列在列表中。现在,如果注销MySQL的会话,然后发出SELECT命令,这时你会发现在数据库中没有可用的数据。 临时表也就不存在了。
默认情况下,当你的数据库连接被终止,所有的临时表被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 'TUTORIALS.SALESSUMMARY' doesn't exist