目录
[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周年快乐!!!
-
postgres=#\l
| 元命令 | 作用 |
| \l | 列出所有数据库。 |
| \c | 【数据库名】或 \connect[数据库名] |
| \dn | 列出所有模式(Schema) |
| \db | 列出所有表空间 |
| \? | 显示pgsql命令的说明(元命令查询帮助) |
| \q | 退出psql |
| \dt | 列出当前数据库的所有库 |
| \d [table] | 查看表结构 |\du 列出所有用户 -
postgres=#\l+
\l+ 的输出比 \l 多了size(大小),table space和description列- :扩展输出,显示更多字段或详细信息。
-
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+核心命令,每个命令均包含选项详解和应用示例)
总结与最佳实践
-
性能关键命令:
-
使用
CREATE INDEX CONCURRENTLY
避免生产环境锁表 -
VACUUM ANALYZE
应定期执行(可配置autovacuum)
-
-
安全建议:
-
遵循最小权限原则(
GRANT/REVOKE
精细控制) -
生产环境避免使用
UNLOGGED
表
-
-
高可用方案:
-
逻辑复制槽需监控延迟(
pg_replication_slots
视图) -
使用
pg_basebackup
建立物理备份
-
-
版本特性:
-
PG 12+支持生成的列(GENERATED ALWAYS AS)
-
PG 14+支持JSONB下标语法
-