pg 数据库对象
创建数据库
语法 | 参数 | 参数作用 |
---|---|---|
create database db_name | with | |
owner | ||
template | 使用数据库模板名 | |
encoding | ||
allowconn | 默认为true 是否允许连接 | |
connlimit | 限制连接数,默认没有限制 | |
istemplate | 是否为模板库 |
删除数据库
语法 | 参数 | 参数作用 |
---|---|---|
drop databse if exists database_name |
修改数据库
语法 | 参数 | 参数作用 |
---|---|---|
ALTER DATABASE name RENAME TO new_name; | 改名 | |
ALTER DATABASE name OWNER TO new_owner; | 修改所有者 | |
alter database name with ... | 修改数据库选项 | |
ALTER DATABASE name SET TABLESPACE new_tablespace; | 修改数据库表空间 | |
ALTER DATABASE name SET configuration_parameter FROM CURRENT; | 修改数据库配置文件 |
创建表
选择column数据类型
- 最小的空间存储数据
- 对数据范围的约束
设置table和column约束
- 检查约束 check
- 非空约束
- 唯一约束
- 主键约束
- 外键约束(不支持)
定义主键
- 可以选择一列或者多列
- 生成主键:
1.将主键设置成 seial
定义外键
- 数据完整性
选择表的分布策略
-
考略因素
- 平坦的数据分布:大表之间关联的某个唯一性较高的字段
- 本地操作与分布式操作
- 平坦的查询处理
声明分布键
- distributed by ;distributed randonly;distributed replicaied
选择表的存储类型
-
堆存储
-
追加优化存储 ao
- 创建ao appendoptimized=true
- 选择行存,列存crientation=true 1.更新操作:行存heap表 2.insert操作:行 3.查询column多:行,单字段,列 4.表中字段数 5.压缩,列
- 使用压缩 compresstype='' compresslevel=5 113页
表分区
是否要分区原则
- 表足够大,每个分区在每个instance上数据量在100-1000万
- 查询条件是否满足分区条件
- 数据仓库是否要滚动历史数据
- 某个规则下的数据是否可以均匀拆分
创建分区表
-
时间范围分区 rangge
- 考虑最细的颗粒进行分区
-
数字范围分区 range
-
定义列表分区表 list
- 多个column组合(范围分区不允许)
插入数据到分区表
- 非叶子分区没有数据,数据在最底层,不能匹配添加到默认分区
验证分区策略
- 使用 explain 查看sql执行计划
分区选择性诊断
维护分区表
-
必须使用alter table从root表来维护
-
添加/修改/删除/拆分新分区
序列 ?
特殊的单行表
创建序列
语法
[ AS data_type ]
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ]
[ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ]
[ CACHE cache ]
[ [ NO ] CYCLE ]
[ OWNED BY { table_name.column_name | NONE } ]
解释说明:
TEMPORARY | TEMP
指定当前序列是一个临时序列。您只能在当前会话中使用。它会在会话结束时被自动删除。 它是可选的。
IF NOT EXISTS
如果指定,如果存在同名的序列,则不会引发错误。
seq_name
要创建的序列的名称。
data_type
它指示了这个序列的数据类型。可用值: smallint, integer, 和 bigint,并且 bigint 是默认值。
INCREMENT [ BY ] increment
序列增长的步幅,可以是整数或者负数。正值将产生一个升序序列,负值将产生一个降序序列。默认是值 1。
MINVALUE minvalue | NO MINVALUE
minvalue 是序列的最小值。 NO MINVALUE 意味着使用数据类型的最小值。 升序序列的默认值是 1, 降序序列的默认值是数据类型的最小值。
MAXVALUE maxvalue | NO MAXVALUE
maxvalue 是序列的最大值。 NO MAXVALUE 意味着使用数据类型的最大值。 降序序列的默认值是 1, 升序序列的默认值是数据类型的最大值。
START [ WITH ] start
start 是此序列的起始值。升序序列的默认值是 minvalue,降序序列的默认值是 maxvalue。
CACHE cache
cache 是缓存在内存中的序列值的数量,以便可以快速访问。 默认值是 1, 1 也是可接受的最小值。
[ NO ] CYCLE
指示序列是否可循环的。 如果指定 NO CYCLE,那么序列到结尾的时候,再取值则会发生错误。
OWNED BY { table_name.column_name | NONE }
将此序列与指定表的列关联起来。如果此列被删除,此序列会被自动删除。
访问序列
nextval: 获取并返回序列的下一个值。
currval: 返回当前会话中指定序列的当前值。
setval: 重置指定序列的当前值。
临时表
column_name data_type column_contraint
[, ...]
table_constraint
);
selecct into
从结果集创建一个新表
事务
四大特性:
原子性(Atomicity): 事务中的操作要么全部执行,要么全部不执行。
一致性(Consistency): 一个事务必须是数据库从一个一致状态变成另一个一致状态。
隔离性(Isolation): 多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
持久性(Durability): 已提交的事务将永久存储在数据库中。
数据库事务的四大特性通常被简称为 ACID。
事务命令
开始事务 start transaction;bagin
提交事务 commit transaction;commit
回滚事务 rollback transaction;rollback
索引
视图
视图就是一个sql
创建视图
- create view name as select...
删除视图
- drop view name
物化视图
- 将查询结果持久化为数据文件,不会刷新,只能通过refresh materialized view 刷新数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)