MySQL暂时表是一种共同的表类型,答应你在单个用户会话中暂时存储数据。MySQL暂时表与一般的MySQL表没有什么不同,除了它是不稳定的。

一旦一个表在一个特定的用户会话中被初始化,只需该用户能够检查、编辑或删去该表。其他登录的用户不能拜访它。一旦一个会话死亡,MySQL就会主动抛弃该表和存储在其间的数据。

在本教程中,咱们将快速评论怎么创立和运用MySQL暂时表。

注意: 对MySQL暂时表的支撑从MySQL服务器3.2版及以上开端。假如你运用的是旧版本,你或许无法运用特定的功能。

怎么创立一个暂时表?

创立暂时表的进程和语法与你用来创立一般表的进程和语法十分相似。

但是,你需要在句子中指定TEMPORARY关键字。咱们能够将查询表述为

CREATE TEMPORARY TABLE table_name (
Columns,
table_constraints
);

你能够指定任何表名,只需它不与主表抵触。

尽管你能够创立一个与主表同名的暂时表,但这并不是一个好的做法,因为它或许会导致紊乱,并或许导致数据丢掉。

例1
下面的查询说明了怎么创立一个MySQL暂时表并在其间存储数据。

首要,登录到一个MySQL会话。

mysql -u root -p

登录后,创立一个样本数据库。

CREATE DATABASE IF NOT EXISTS temp_db;

在下一步,改动数据库并运用查询创立一个暂时表。

USE temp_db;
CREATE TEMPORARY TABLE temp_tb (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100) NOT NULL, email VARCHAR(255));

一旦你创立了一个暂时表,你能够运用填充和更新一般MySQL表的相同进程刺进和更新存储在上面的数据。

例如,运用下面的查询,向上面创立的temp_tb刺进样本数据。

INSERT INTO temp_tb (username, email)
VALUES ('t00r', 'info@sample.db'),
('db_user', 'dev@mysql.db'),
('z3ro', 'zero@info.com');

一旦你有了数据,你就能够运用一般的SQL SELECT句子从中挑选数值。

SELECT * FROM temp_tb;
+----+----------+----------------+
| id | username | email          |
+----+----------+----------------+
|  1 | t00r     | info@sample.db |
|  2 | db_user  | dev@mysql.db   |
|  3 | z3ro     | zero@info.com  |
+----+----------+----------------+
3 rows in set (0.00 sec)

例2
MySQL暂时表的一个
更常见的运用情况是存储另一个表的值,这或许很有用,特别是当你有一个长的脚本拜访数据库的时候;避免其他查询产生。

让咱们考虑一下sakila样本数据库。咱们能够用查询的方式在客户表的基础上创立一个暂时表。

USE sakila;

一旦进入数据库,运用下面的查询。

CREATE TEMPORARY TABLE customer_temp SELECT * FROM customer LIMIT 0;

一旦查询被成功履行,你能够运用DESC句子来验证这些表是否包含相似的信息,如。

如何创建和使用MySQL临时表

怎么重命名一个暂时表?

与一般的MySQL表不同,你不能运用RENAME句子目录来重命名一个暂时表。

要完成这一点,你能够运用ALTER TABLE查询。

例如,要把暂时表从customer_temp重命名为cust_temp;咱们能够运用查询。

ALTER TABLE customer_temp RENAME cust_temp;

怎么删去一个暂时表?

要删去一个暂时表,运用DROP TEMPORARY TABLE句子。运用TEMPORARY关键字能够确保你不会意外地删去一个正常的表。

DROP TEMPORARY TABLE cust_temp;

回忆一下

MySQL暂时表答应你为单个用户会话暂时存储信息。以下是MySQL暂时表的属性。

  1. 咱们通过指定TEMPORARY关键字来创立它们。
  2. 它们不存在于单个用户会话之外。
  3. 它们是不稳定的,在用户会话完毕后会被删去。
  4. 它们的功能相似于正常的MySQL表。
  5. 它们能够有与主表相似的姓名(不推荐)。
  6. 一个用户会话中的两个表不能包含一个相似的姓名。

这一次就到此为止。