PostgreSQL 随笔 临时表 & 视图 & with

0.博客感觉也要跟代码一起逐版迭代了…

PgSQL12 中文文档 CREATE TABLE AS
PgSQL12 中文文档 视图

1. 临时表

存储的是一个临时的表,该表的结果集不会更新

1.1 demo

-- 这个例子,我承认有些生涩...
create temp table if not exists alarmItemTempTable as (
	select p.code as type,array_agg(c.code) as arr from sys_category as c inner join
	(select id,code from sys_category where  pid = (select id from sys_category where code = ''alarm_warning_type'')) as p
	on c.pid = p.id
	group by p.code
)	

-- 调用临时表
select type,arr from alarmItemTempTable

1.2 特点

默认在会话后,被自动清理,可以使用on commit指令指定事务结束后清理。当然,也可以手动清理。

2. 视图

查询SQL的一个引用,用户因此而不必每次输入相同的SQL

2.1 demo

-- 创建一个视图
CREATE VIEW myview AS
    SELECT city, temp_lo, temp_hi, prcp, date, location
        FROM weather, cities
        WHERE city = name;
-- 调用该视图查询
SELECT * FROM myview;

2.2 特点

因此存储的是SQL,因此返回的数据集是实时更新的
存储的这条SQL支持后续的修改,甚至可以在视图的基础上创建视图

2.3 物化视图

物化视图不能实时的更新结果集,需要手动刷新。

适合非实时数据的查询

2.4 内置视图

从pgsql的两个模式(Schema)划分,内置视图可分为 诸多数据库语言常见的information_schema模式、pgsql特有的pg_catalog模式

2.4.1 information_schema视图

允许用户查询用户相关的表/视图/函数的各种属性

该视图默认是隐藏的

select *  from information_schema.tables
select *  from information_schema.columns

2.4.2 pg_catalog 模式

pgsql系统视图,也有同上的能力

select * from pg_tables 
pselect * from pg_catalog.pg_namespace

3. with

with 是sql原生支持的,不同前两者(应用于存储过程)
使用with 一样可以实现临时表的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肯尼思布赖恩埃德蒙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值