位置:首页 > 数据库 > SQL在线教程 > SQL临时表

SQL临时表

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