Postgresql的临时表的用法
Postgresql的临时表的用法
临时表解释:
PostgreSQL中的临时表分两种,一种是会话级临时表,一种是事务级临时表。在会话级临时表中,数据可以存在于整个会话的生命周期中,在事务级临时表中的数据只能存在于事务的生命周期中。
- 不管是会话级还是事务级的临时表,当会话结束后,临时表会消失,这和Oracle数据库不同。Oracle数据库当会话结束后,数据消失,而表依然存在。
- “ON COMMIT” 子句有三种形式,默认使用的是PRESERVE ROWS:
(1)ON COMMIT PRESERVE ROWS 表示临时表的数据在事务结束后保留;
(2)ON COMMIT DELETE ROWS 表示临时表的数据在事务结束后truncate掉;
(3)ON COMMIT DROP 表示临时表在事务结束后删除。
临时表与永久表相似,数据是存储到数据库里,相当于第二次直接关联的是一个小表,查询效率大大提高,表和数据可以根据需求是否保留。
法一创建临时表,再批量导入数据
---创建临时表
CREATE TEMPORARY TABLE temp_table (
id int,
name varchar(50),
age int,
)ON COMMIT PRESERVE ROWS;
---验证临时表(无数据)
SELECT * FROM temp_table;
---批量导入数据
INSERT INTO temp_table(
id,
name,
age
)
SELECT
id,
name,
age
FROM target_table;
一般不使用法一,临时表每个字段都需要自己定义,毕竟有些数据结果集需要先存储起来再处理,也不能定义的字段都考虑到。
法二直接从结果集创建临时表
---根据查询的结果集生成临时表不需要每个字段都定义
CREATE TEMPORARY TABLE temp_table AS (SELECT * FROM target_table);
---验证临时表
SELECT * FROM temp_table;
---删除临时表
DROP TABLE temp_table;
---本次使用完临时表后临时表和数据都保留
CREATE TEMPORARY TABLE temp_table ON COMMIT PRESERVE ROWS AS (SELECT * FROM target_table);
---本次使用完临时表后临时表保留数据清空
CREATE TEMPORARY TABLE temp_table ON COMMIT DELETE ROWS AS (SELECT * FROM target_table);
---本次使用完临时表后自动删除
CREATE TEMPORARY TABLE temp_table ON COMMIT DROP AS (SELECT * FROM target_table);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现