PostgreSQL

目录

前言

一、数据库管理命令

[1. 创建数据库](#1. 创建数据库)

[2. 修改数据库](#2. 修改数据库)

二、表操作命令

[1. 创建表](#1. 创建表)

[2. 修改表结构](#2. 修改表结构)

三、索引操作

[1. 创建索引](#1. 创建索引)

四、权限管理

[1. 授权命令](#1. 授权命令)

五、查询优化命令

[1. EXPLAIN 分析](#1. EXPLAIN 分析)

六、备份恢复命令

[1. pg_dump 逻辑备份](#1. pg_dump 逻辑备份)

七、维护命令

[1. VACUUM 维护](#1. VACUUM 维护)

八、高级特性命令

[1. 窗口函数](#1. 窗口函数)

九、复制命令

[1. 创建复制槽](#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 allowconn
    CONNECTION LIMIT connlimit
    IS_TEMPLATE istemplate
    RENAME TO new_name
    OWNER TO new_owner
    SET TABLESPACE new_tablespace
    SET 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 ] name
    action [, ... ]
其中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_name
    ADD table_constraint
    VALIDATE CONSTRAINT constraint_name
    DISABLE/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下标语法

相关推荐
2501_9111212334 分钟前
PostgreSQL日常维护
数据库·oracle
看到千里之外的云43 分钟前
Oracle 11g post PSU Oct18 设置ssl连接(使用jks)
数据库·oracle·ssl
什么都想学的阿超1 小时前
14【高级指南】Django部署最佳实践:从开发到生产的全流程解析
数据库·django·sqlite
林的快手1 小时前
基于 Redis 实现短信验证码登录功能的完整方案
java·开发语言·数据库·redis·缓存·bootstrap
影龙帝皖1 小时前
Mysql数据库相关命令及操作
数据库·mysql·oracle
星辰离彬3 小时前
数据库优化技巧:MySQL 重复数据查询与删除(仅保留一条)的性能优化策略
数据库·mysql
2401_836836593 小时前
PostgreSQL使用
数据库·postgresql
大鹅同志3 小时前
Ubuntu 20.04卸载并重装 PostgreSQL
linux·ubuntu·postgresql
swcq_4 小时前
DS18B20 温度传感器实验探索与实践分享
数据库