Postgresql的临时表的⽤法
Postgresql的临时表的⽤法
临时表解释:
PostgreSQL中的临时表分两种,⼀种是会话级临时表,⼀种是事务级临时表。在会话级临时表中,数据可以存在于整个会话的⽣命周期中,在事务级临时表中的数据只能存在于事务的⽣命周期中。
1. 不管是会话级还是事务级的临时表,当会话结束后,临时表会消失,这和Oracle数据库不同。Oracle数据库当会话结束后,数据消
失,⽽表依然存在。
2. “ON COMMIT” ⼦句有三种形式,默认使⽤的是PRESERVE ROWS:
(1)ON COMMIT PRESERVE ROWS 表⽰临时表的数据在事务结束后保留;
(2)ON COMMIT DELETE ROWS 表⽰临时表的数据在事务结束后truncate掉;
drop删除表(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);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论