让我们探索一下 MariaDB 中的 是如何工作的。首先,我们必须连接到服务器。例如(使用您自己的连接详细信息): 临时表 mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo 现在,为了指出一些事项,让我们创建一个标准(永久)表。方法如下: CREATE TABLE t ( c INT ); 即使我们退出客户端,这个表 仍会保留在数据库中: t exit 当我们重新连接并使用 检查现有表时,表 仍将被列出: SHOW TABLES; t mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo SHOW TABLES; +----------------+ | Tables_in_demo | +----------------+ | t | +----------------+ 所有这些都非常明显,但是现在,让我们重新创建该表并尝试一些不同的东西: CREATE OR REPLACE TEMPORARY TABLE t ( c INT ); 请注意 关键字。创建此表后,如果我们运行 ,它将出现在列表中。我们可以向其中插入数据、查询它并将其与其他表连接起来。在当前会话期间,它的行为就像普通表一样。但是,如果我们退出客户端,然后重新连接,并再次执行 ,则不会列出临时表 。 TEMPORARY SHOW TABLES; SHOW TABLES; t 临时表仅在创建它的会话期间存在,其他会话将无法看到它。 临时表的用例 临时表对于临时数据操作非常有用。例如,考虑数据库中一个名为 的表: products CREATE TABLE products ( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(100) NOT NULL, name VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY code (code) ) 我们可以创建一个模拟 结构的临时表: products CREATE TEMPORARY TABLE t LIKE products; 我们可以通过运行以下命令来确认这一点: DESCRIBE t; +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | code | varchar(100) | NO | UNI | NULL | | | name | varchar(250) | NO | | NULL | | | description | text | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+ 最初, 为空。但是,假设我们想将一些数据从 转移到 。假设我们只想包含代码中包含数字 0 的产品: t products t INSERT INTO t SELECT * FROM products WHERE code LIKE '%0%'; 运行此命令后,如果我们查询临时表 : t SELECT * FROM t; +----+--------+------------------+---------------------------------------------------+ | id | code | name | description | +----+--------+------------------+---------------------------------------------------+ | 1 | BG2024 | BugBlaster | Eradicates software bugs with a single scan. | | 3 | FW001 | FireWhale | An oversized, comprehensive firewall solution. | | 4 | CLD404 | CloudNine Finder | Find your way back from cloud outages and errors. | +----+--------+------------------+---------------------------------------------------+ 我们看到了过滤后的数据。 结论 临时表提供了一种强大的方法来临时处理数据,而不会影响持久数据存储。它们在需要临时操作或转换数据的场景中特别有用。您可以使用永久表进行这种数据操作,但当您需要自动清理、降低命名冲突风险、隔离和安全性以及查询性能的资源管理时,临时表非常有用。