Mysql 简明教程

MySQL - Temporary Tables

What are Temporary Tables?

Temporary Tables 表是在数据库中创建的,用于暂时存储数据。一旦当前的客户端会话被终止或结束,这些表将会被自动删除。此外,如果用户决定手动删除,这些表也可以被明确删除。你可以对临时表执行各种 SQL 操作,就像永久表一样,包括 CREATE、UPDATE、DELETE、INSERT、JOIN 等。

临时表是在 MySQL 3.23 版中引进的。如果你使用的是比 3.23 旧的 MySQL 旧版本,你将不能使用临时表,而必须用 Heap Tables 代替。

如前所述,临时表只会持续到会话结束为止。如果您在 PHP 脚本中运行代码,那么临时表将在脚本执行完毕后自动销毁。如果您通过 MySQL 客户端程序连接到 MySQL 数据库服务器,那么该临时表将一直存在到您关闭客户端或手动销毁表为止。

Creating Temporary Tables in MySQL

在 MySQL 中创建临时表非常类似于创建常规数据库表。但是,我们使用 CREATE TEMPORARY TABLE 语句来代替使用 CREATE TABLE。

Syntax

以下是在 MySQL 中创建临时表的语法:

CREATE TEMPORARY TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

Example

首先,让我们用下列查询来创建一个名为 CUSTOMERS 的临时表:

CREATE TEMPORARY TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

类似于正常表,我们可以使用 INSERT 语句来向临时表插入记录。我们这里向上面创建的临时表中插入 3 条记录:

INSERT INTO CUSTOMERS VALUES
   (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
   (2, 'Khilan', 25, 'Delhi', 1500.00 ),
   (3, 'kaushik', 23, 'Kota', 2000.00 );

执行以下查询来显示临时表 CUSTOMERS 中的所有记录。

SELECT * FROM CUSTOMERS;

以下是 CUSTOMERS 表的记录:

当我们发布一则 SHOW TABLES 指令时,我们的临时表不会被显示在表中。若要验证临时表是否存在,我们需要使用 SELECT 语句取得其数据。我们结束会话时,临时表将被删除,因此如果我们退出登录 MySQL 并尝试发布 SELECT 指令,我们不会在数据库中看到临时表。

Dropping Temporary Tables in MySQL

虽然 MySQL 会在您的数据库连接结束时自动移除临时表,但如果我们愿意,我们仍可以用 DROP TEMPORARY TABLE 指令自行删除它们。

Syntax

以下是 MySQL 中用于删除临时表的语法 −

DROP TEMPORARY TABLE table_name;

Example

在以下查询中,我们正在删除前一个示例中创建的临时表 CUSTOMERS −

DROP TEMPORARY TABLE CUSTOMERS;

Output

执行上述查询将产生以下输出:

Query OK, 0 rows affected (0.00 sec)

Verification

现在,让我们通过使用以下查询取得 CUSTOMERS 记录来验证该临时表 −

SELECT * FROM CUSTOMERS;

由于我们移除了临时表 CUSTOMERS,因此它会生成一张错误报告,表明该表不存在。

ERROR 1146: Table 'TUTORIALS.CUSTOMERS' doesn't exist

Creating Temporary table Using a Client Program

除了使用 MySQL 查询在 MySQL 数据库中创建一张临时表外,我们还可以在一张表上使用一个客户端程序来执行 “TEMPORARY TABLE” 操作。

Syntax

以下是在各种编程语言中在 MySQL 数据库中创建一张临时表的语法 −

Example

以下是这些程序 −