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执行计划

分区选择性诊断

维护分区表

序列 ?

特殊的单行表

创建序列

语法

    [ 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 刷新数据
posted @   braveman1021  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示