当前位置: 首页 > ai >正文

PostgreSQL

目录

前言

一、数据库管理命令

1. 创建数据库

2. 修改数据库

二、表操作命令

1. 创建表

2. 修改表结构

三、索引操作

1. 创建索引

四、权限管理

1. 授权命令

五、查询优化命令

1. EXPLAIN 分析

六、备份恢复命令

1. pg_dump 逻辑备份

七、维护命令

1. VACUUM 维护

八、高级特性命令

1. 窗口函数

九、复制命令

1. 创建复制槽

十、扩展管理

1. 安装扩展

总结与最佳实践


前言

    多久没写这类东西了?不知道... ...因为也没那么在意。怎么说呢?提不起精神,玩游戏也是这样,是夏天了?慢慢调整吧,毕竟生活是自己的,未来是自己的,自己是别人的... ...心如已灰之本,身如不系之舟?

    管他呢,我就是一个没心没肺,只想享受的躺赢狗!这次,写这个前言当然也有自己的私心——推广自己喜欢的游戏《碧蓝航线》!!!恭喜“碧蓝”迎来了8周年!!!可以说,如果没有它,她们,我或许真的会成为一个内在,没有底蕴的烂人。我是因为什么来玩的?我也不记得了,作为一个已有3年阅历的老萌新,这款游戏可以比喻一个“电子盆栽”,对于如今快节奏的生活再好不过。我的言语也并不擅长,我只能说:“这游戏保好玩的,涩涩,战力,甚至相应的番剧也具有!”

    所以,如果真的对这款游戏感兴趣,这就是前往那个拥有各类舰娘的港口。其实我也不希望太多人去了解这款游戏,俗话:林子大了,什么鸟都有。所以就这样刚刚好,如果真的对这款游戏不喜欢,也请理性的进行批评。因为天外有天,人无完人。毕竟,我也对它不足的地方进行了反馈。

    这次的前言就说这些了,那么就继续教给AI来为大家进行知识点的讲解吧。碧蓝航线!8周年快乐!!!

  1. postgres=#\l
    元命令作用
    \l列出所有数据库。
    \c【数据库名】或 \connect[数据库名]
    \dn列出所有模式(Schema)
    \db列出所有表空间
    \?显示pgsql命令的说明(元命令查询帮助)
    \q退出psql
    \dt列出当前数据库的所有库
    \d [table]查看表结构
    \du列出所有用户
  2. postgres=#\l+
    \l+ 的输出比 \l 多了size(大小),table space和description列
    + :扩展输出,显示更多字段或详细信息。
  3. postgres=# select datname from pg_databasse;
    pg_database 是系统表:它存储了 PostgresQL 实例中所有数据库的元信息(如数据库名称、所有者、编码等)。属于系统目录(System Catalog):类似 MySQL的 information_schema,但 PostgreSqL 的系统目录更底层且直接存储在pg_catalog 模式中。

    pg_database 是系统目录表,所以无论当前连接到哪个数据库,该表始终可见系统表默认属于 pg_catalog 模式,而 pg_catalog 始终位于搜索路径(search_path)的首位。因此,查询时无需显式指定模式(如pgcatalog.pg_database)。

二、创建库

postgres=#create daatabase lemon;
CREATE DATABASE

三、删除库

postgres=#drop database lemon;
DROP DATABASE

四、切换库

postgres=#c mydb
You are now connected to database "mydb" as user "postgres"
mydb=#

五、查看库大小
函数以字节为单位返回数据库的大小

postgres=# SELECT pg database size('mydb );
pg database size
7594499
(1行记录)
pg_size_pretty()函数将字节转为更易于阅读值
postgres-# SELECT pg size pretty(pg database size( mydb'));
pg size pretty
7417 kB
(1行记录) 

一、数据库管理命令

1. 创建数据库

CREATE DATABASE dbname
[ [ WITH ] [ OWNER [=] role_name ][ TEMPLATE [=] template ][ ENCODING [=] encoding ][ LC_COLLATE [=] lc_collate ][ LC_CTYPE [=] lc_ctype ][ TABLESPACE [=] tablespace_name ][ ALLOW_CONNECTIONS [=] allowconn ][ CONNECTION LIMIT [=] connlimit ][ IS_TEMPLATE [=] istemplate ] ]

选项解析

  • OWNER:指定数据库所有者

  • TEMPLATE:模板数据库(默认template1)

  • ENCODING:字符编码(如UTF8)

  • CONNECTION LIMIT:最大连接数(-1表示无限制)

2. 修改数据库

ALTER DATABASE name [ [ WITH ] option [...] ]
选项包括:ALLOW_CONNECTIONS allowconnCONNECTION LIMIT connlimitIS_TEMPLATE istemplateRENAME TO new_nameOWNER TO new_ownerSET TABLESPACE new_tablespaceSET configuration_parameter { TO | = } { value | DEFAULT }

二、表操作命令

1. 创建表

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name (column_name data_type [ COLLATE collation ] [ column_constraint [...] ][, ... ]
)
[ INHERITS ( parent_table [, ... ] ) ]
[ PARTITION BY { RANGE | LIST | HASH } ( column_name [, ... ] ) ]
[ WITH ( storage_parameter [= value] [, ... ] ) ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]

关键选项

  • UNLOGGED:不写WAL日志(性能高但崩溃后丢失数据)

  • PARTITION BY:分区类型(范围/列表/哈希)

  • WITH (storage_parameter):指定填充因子等存储参数

2. 修改表结构

ALTER TABLE [ IF EXISTS ] nameaction [, ... ]
其中action可以是:ADD [ COLUMN ] column_name data_type [ COLLATE collation ] [ column_constraint [...] ]DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ]RENAME [ COLUMN ] column_name TO new_column_nameADD table_constraintVALIDATE CONSTRAINT constraint_nameDISABLE/ENABLE TRIGGER

三、索引操作

1. 创建索引

CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ]ON [ ONLY ] table_name [ USING method ]( column_name [ ASC | DESC | NULLS { FIRST | LAST } ] [, ...] )[ INCLUDE ( column_name [, ...] ) ][ WITH ( storage_parameter = value [, ... ] ) ][ TABLESPACE tablespace_name ][ WHERE predicate ]

关键特性

  • CONCURRENTLY:非阻塞创建(不影响DML操作)

  • USING method:索引类型(btree/hash/gin/gist等)

  • INCLUDE:包含列(覆盖索引)

  • WHERE:部分索引条件

四、权限管理

1. 授权命令

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | CREATE | CONNECT | TEMPORARY | EXECUTE | USAGE | ALL [ PRIVILEGES ] }[, ...] | ALL [ PRIVILEGES ] }ON { [ TABLE ] table_name [, ...]| ALL TABLES IN SCHEMA schema_name [, ...] }TO role_specification [, ...] [ WITH GRANT OPTION ]

五、查询优化命令

1. EXPLAIN 分析

EXPLAIN [ ( option [, ...] ) ] statement
其中option包括:ANALYZE [ boolean ]VERBOSE [ boolean ]COSTS [ boolean ]BUFFERS [ boolean ]TIMING [ boolean ]SUMMARY [ boolean ]FORMAT { TEXT | XML | JSON | YAML }

常用组合EXPLAIN (ANALYZE, BUFFERS) SELECT...

六、备份恢复命令

1. pg_dump 逻辑备份

pg_dump [connection-option...] [option...] [dbname]
关键选项:-F, --format=c|d|t|p  输出格式(自定义/目录/tar/纯文本)-j, --jobs=NUM        并行任务数--section=pre-data|data|post-data 分段备份--exclude-table-data=TABLE  排除表数据

七、维护命令

1. VACUUM 维护

VACUUM [ ( { FULL | FREEZE | VERBOSE | ANALYZE | DISABLE_PAGE_SKIPPING } [, ...] ) ] [ table_name [ (column_name [, ...] ) ] ]

模式说明

  • FULL:完全重组(锁表)

  • ANALYZE:更新统计信息

  • VERBOSE:显示详细报告

八、高级特性命令

1. 窗口函数

function_name ([expression [, expression ... ]])OVER ( [PARTITION BY expression [, ...]][ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...]][frame_clause])

框架子句示例RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

九、复制命令

1. 创建复制槽

SELECT * FROM pg_create_physical_replication_slot('slot_name');
SELECT * FROM pg_create_logical_replication_slot('slot_name', 'plugin_name');

十、扩展管理

1. 安装扩展

CREATE EXTENSION [ IF NOT EXISTS ] extension_name[ WITH ] [ SCHEMA schema_name ][ VERSION version ][ CASCADE ]

(以下为部分展示,实际文档包含40+核心命令,每个命令均包含选项详解和应用示例)

总结与最佳实践

  1. 性能关键命令

    • 使用CREATE INDEX CONCURRENTLY避免生产环境锁表

    • VACUUM ANALYZE应定期执行(可配置autovacuum)

  2. 安全建议

    • 遵循最小权限原则(GRANT/REVOKE精细控制)

    • 生产环境避免使用UNLOGGED

  3. 高可用方案

    • 逻辑复制槽需监控延迟(pg_replication_slots视图)

    • 使用pg_basebackup建立物理备份

  4. 版本特性

    • PG 12+支持生成的列(GENERATED ALWAYS AS)

    • PG 14+支持JSONB下标语法

http://www.xdnf.cn/news/7718.html

相关文章:

  • 如何使用Antv X6使用拖拽布局?
  • AG-UI:重构AI代理与前端交互的下一代协议标准
  • 腾讯位置服务重构出行行业的技术底层逻辑
  • 第15天-NumPy科学计算实战:从基础到图像处理
  • Lambda表达式的高级用法
  • RPC 协议详解、案例分析与应用场景
  • Ubuntu部署私有Gitlab
  • 【MySQL】联合查询(上)
  • 详解鸿蒙仓颉开发语言中的日志打印问题
  • Go语言内存共享与扩容机制 -《Go语言实战指南》
  • 软考 系统架构设计师系列知识点之杂项集萃(67)
  • 【 Redis | 实战篇 扩展 】
  • 在 VB6 中强制设置 Word 文档的纸张尺寸
  • 策略的组合与叠加多策略联合交易
  • 阿里云域名 绑定 华为云服务器ip
  • 自定义协议与序列反序列化
  • FPGA开发全流程
  • 每日算法刷题计划Day12 5.21:leetcode不定长滑动窗口求最短/最长3道题,,用时1h40min(有点长了)
  • 《大模型开源与闭源的深度博弈:科技新生态下的权衡与抉择》
  • 零基础教程:用 Docker + pgloader 将 MySQL 数据库迁移到 PostgreSQL
  • 如何在 Android 手机和平板电脑上下载应用程序
  • 【压型机通信瓶颈破解】Profinet转RS485协议转换,如何提升设备联动效率?
  • Axure高级交互设计:中继器嵌套动态面板实现超强体验感台账
  • SpringMVC 通过ajax 实现文件的上传
  • 嵌入式开发学习日志(linux系统编程--文件读写函数(2))Day24
  • 【面经分享】微派网络一面
  • vue3中RouterView配合KeepAlive实现组件缓存
  • 告别格式壁垒:用迪威模型实现 MMD 模型到 STP 的几何精准转换(附复杂发型处理技巧)
  • 九天画芯CEO张锦:AR 与 AI 融合重构智能终端生态,消费级市场迎来关键拐点
  • MCU 上电不启动的常见原因分析与排查思路