postgresql
PostgreSQL 14+PostgreSQL 快速参考:psql 客户端命令、DDL/DML、连接与聚合、索引、事务与备份恢复,并附带常用参数和实操示例。
36 条命令
连接
psql -h <host> -p <port> -U <user> -d <db>对本地或远程数据库打开一个交互式 psql 会话。
-h 主机;-p 5432 默认;-U 用户;-d 数据库;-W 强制密码;-f 文件执行脚本;-c 单条命令
PGPASSWORD=secret psql -h db.example.com -U app -d app_productionpsql -U <user> <db> --variable='ON_ERROR_STOP=1' -f <file.sql>对数据库执行 SQL 脚本,遇错即停。
psql -U app -d app -v ON_ERROR_STOP=1 -f migrations/0001_init.sqlpsql 元命令
\l[+] \c[onnect] [<db>]列出数据库;然后连接到其中之一。
\l+ 显示大小/表空间信息;\c db user 切换目标
\l+; \c app_dev\dt[+] [<pattern>]列出当前 schema(默认 public)中匹配模式的表。
\dt+ 显示大小与说明;\dt *.* 跨所有 schema;\d 表 查看表结构
\dt+ public.*\d <table|view|index|seq|matview>查看对象的结构:列、索引、外键、注释。
\d orders\dn / \du / \dv / \di分别列出 schema / 角色 / 视图 / 索引。
\du; \di+ idx_orders_user_id\timing / \x / \? / \q开关查询计时、扩展显示模式、查看帮助、退出 psql。
\timing on; \x auto; SELECT * FROM orders LIMIT 2; \q\copy <table> FROM '<file>' DELIMITER ',' CSV HEADER从文件批量加载数据(服务端执行,但读取的是客户端文件系统)。
\copy orders(order_id,user_id,total,created_at) FROM '/tmp/orders.csv' WITH CSV HEADER数据库与 Schema
CREATE DATABASE <db>创建一个新数据库,可指定模板数据库相关选项。
OWNER 角色;TEMPLATE template0;ENCODING 'UTF8';LC_COLLATE
CREATE DATABASE app_dev OWNER app_user ENCODING 'UTF8' TEMPLATE template0DROP DATABASE <db>删除一个数据库(不得处于被使用状态;常配合 IF EXISTS + FORCE)。
DROP DATABASE WITH (FORCE);postgres 13+
DROP DATABASE IF EXISTS app_old;CREATE SCHEMA / DROP SCHEMA用于组织表/视图的命名空间,是默认 search_path 的一部分。
CREATE SCHEMA IF NOT EXISTS audit; DROP SCHEMA staging CASCADE;表与 DDL
CREATE TABLE创建一个新表,定义列、类型、默认值与约束。
PRIMARY KEY;FOREIGN KEY ... REFERENCES;UNIQUE;CHECK;INHERITS;PARTITION BY RANGE|LIST
CREATE TABLE orders (id bigserial PRIMARY KEY, user_id int NOT NULL REFERENCES users(id), total numeric(10,2) NOT NULL DEFAULT 0, created_at timestamptz NOT NULL DEFAULT now());ALTER TABLE增/删/重命名列、修改类型、添加约束、设置存储参数。
ADD COLUMN;DROP COLUMN;RENAME TO;ADD CONSTRAINT;ALTER COLUMN ... TYPE
ALTER TABLE orders ADD COLUMN currency char(3) NOT NULL DEFAULT 'USD', ADD CONSTRAINT chk_cur CHECK (currency IN ('USD','EUR','CNY'));DROP TABLE / TRUNCATE删除表(被外键引用时需 CASCADE);TRUNCATE 用于快速清空。
DROP TABLE ... CASCADE;TRUNCATE ... RESTART IDENTITY CASCADE
TRUNCATE TABLE staging.events RESTART IDENTITY CASCADE;COMMENT ON <table|column> IS '...'为数据库对象添加注释——在 \d+ 与 IDE 提示中可见。
COMMENT ON COLUMN orders.total IS '税前小计'DML
INSERT INTO <table> [(cols)] VALUES (...) [RETURNING ...]插入一行或多行;RETURNING 可返回被插入行的字段。
INSERT ... SELECT;ON CONFLICT DO NOTHING / DO UPDATE(upsert);RETURNING
INSERT INTO orders(user_id, total) VALUES (42, 19.95) RETURNING id, created_at;UPDATE ... SET ... [WHERE ...] [RETURNING ...]修改匹配的行;除非有意为之,请始终加 WHERE。
UPDATE ... FROM t2 WHERE ...;CTE (WITH ...) + UPDATE;... RETURNING
UPDATE orders SET status='paid' WHERE user_id = 42 AND created_at < now() - interval '7 days' RETURNING id;DELETE FROM ... [WHERE ...] [RETURNING ...]删除匹配的行;TRUNCATE 在清空整张表时更快。
DELETE ... USING t2 WHERE ...;RETURNING
DELETE FROM orders WHERE status='cancelled' AND created_at < now() - interval '30 days' RETURNING id;查询与过滤
SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT N OFFSET M读取行,并按条件筛选、排序、分页。
WHERE col op ANY/ALL(array);LIMIT n OFFSET n;FETCH FIRST n ROWS ONLY;FOR UPDATE/SHARE 加锁
SELECT id, status, total FROM orders WHERE user_id = 42 ORDER BY created_at DESC LIMIT 10 OFFSET 20;DISTINCT / GROUP BY / HAVING去重、按列聚合、再对聚合结果过滤。
GROUP BY ROLLUP(a,b);GROUPING SETS;HAVING 对聚合过滤;FILTER (WHERE ...) 保留 NULL
SELECT user_id, count(*) FILTER (WHERE status='paid') AS paid, sum(total) AS gmv FROM orders GROUP BY user_id HAVING count(*) >= 3;连接
[INNER | LEFT | RIGHT | FULL] JOIN ... ON ...组合多张表的行;LEFT JOIN 保留左侧未匹配的行。
JOIN LATERAL;NATURAL JOIN;USING(col) 替代 ON;CROSS JOIN 笛卡尔积
SELECT u.email, count(o.id) FROM users u LEFT JOIN orders o ON o.user_id = u.id GROUP BY u.email;WITH cte AS (...) SELECT ...把子查询物化为 CTE;递归 CTE 可处理层级/图结构。
WITH RECURSIVE tree AS (SELECT id, parent_id, name FROM cats WHERE parent_id IS NULL UNION ALL SELECT c.id, c.parent_id, c.name FROM cats c JOIN tree t ON c.parent_id = t.id) SELECT * FROM tree;聚合
count() / sum() / avg() / min() / max() / array_agg() / string_agg()内置聚合函数;与 FILTER 子句或 GROUP BY 配合非常好用。
count/sum 内可用 DISTINCT;array_agg(string_agg) 内可用 ORDER BY
SELECT date_trunc('day', created_at) AS day, sum(total) AS gmv FROM orders GROUP BY day ORDER BY day DESC LIMIT 7;索引与视图
CREATE INDEX ...加速 WHERE / ORDER BY;部分索引可针对热点子集。
CONCURRENTLY(不加排他锁);INCLUDE (a,b) 覆盖索引;USING btree|gin|gist|hash;partial WHERE
CREATE INDEX CONCURRENTLY idx_orders_user_created ON orders(user_id, created_at DESC) INCLUDE (total);EXPLAIN [ANALYZE] <query>查看查询计划;ANALYZE 会实际执行并报告真实耗时与行数。
EXPLAIN (ANALYZE, BUFFERS, VERBOSE);FORMAT JSON / TEXT / YAML
EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE user_id = 42 ORDER BY created_at DESC LIMIT 10;VACUUM / ANALYZE / REINDEX维护存储与统计信息:回收死元组、刷新规划器统计、重建索引。
VACUUM (FULL) 重写整表;ANALYZE 更新统计;REINDEX 重建索引;autovacuum 通常会自动处理
VACUUM (ANALYZE) orders;CREATE VIEW / MATERIALIZED VIEW存储一段查询;物化视图会真正缓存结果(需要刷新)。
CREATE OR REPLACE VIEW;MATERIALIZED VIEW ... WITH NO DATA;REFRESH MATERIALIZED VIEW CONCURRENTLY
CREATE MATERIALIZED VIEW mv_user_orders AS SELECT user_id, count(*) FROM orders GROUP BY user_id; CREATE UNIQUE INDEX ON mv_user_orders(user_id);事务
BEGIN / COMMIT / ROLLBACK把多条语句组成一个原子的工作单元(ACID)。
BEGIN ISOLATION LEVEL SERIALIZABLE;COMMIT/ROLLBACK AND CHAIN;SAVEPOINT 标签
BEGIN ISOLATION LEVEL REPEATABLE READ; UPDATE orders SET ... WHERE ...; 出错 ROLLBACK; 成功 COMMIT;SELECT ... FOR UPDATE / FOR SHARE在事务结束前锁住选中的行,防止并发更新。
FOR UPDATE / SHARE;NOWAIT 或 SKIP LOCKED 适合队列
SELECT id FROM jobs WHERE status='queued' ORDER BY id LIMIT 1 FOR UPDATE SKIP LOCKED;备份与恢复
pg_dump <db> -Fc -f <file.dump>把数据库转储为自定义格式文件(支持并行恢复、按需恢复)。
-Fc custom;-Ft tar;-Fp 纯 SQL;--schema=;--exclude-table=;-j 并行(仅 -Fd)
pg_dump -Fc -d app -f /backup/app-$(date +%F).dumppg_restore -d <db> <file.dump>恢复自定义/tar/dir 格式的转储;只恢复需要的 schema/data/roles。
--clean 先删除对象;--if-exists;--schema=;--table=;--jobs=N;--no-owner;--single-transaction
pg_restore -d app_dev --clean --if-exists --jobs=4 /backup/app.dumppsql -d <db> -f <file.sql>恢复纯 SQL 转储(pg_dump -Fp 输出)。
psql -U app -d app_new -v ON_ERROR_STOP=1 -f /backup/app.sql用户与权限
CREATE ROLE / ALTER ROLE角色可以登录(LOGIN)、拥有对象;可单独为角色授予属性。
LOGIN|REPLICATION|INHERIT|NOSUPERUSER;VALID UNTIL '2026-12-31';PASSWORD '...'
CREATE ROLE reporting LOGIN PASSWORD '...' NOSUPERUSER NOCREATEDB; ALTER ROLE app SET statement_timeout = '5s'CREATE USER <name>`CREATE ROLE ... LOGIN` 的简写形式——创建一个可登录的用户(默认不授予任何权限)。
[SUPERUSER|NOSUPERUSER];CREATEDB|NOCREATEDB;CREATEROLE;INHERIT|NOINHERIT;PASSWORD '...';VALID UNTIL '时间戳';IN ROLE 组名
CREATE USER app_reader WITH PASSWORD 's3cr3t' NOCREATEDB NOCREATEROLE VALID UNTIL '2026-12-31';GRANT / REVOKE对表、schema、数据库、函数授权;支持列级权限。
GRANT SELECT, INSERT ON TABLE ...;GRANT USAGE ON SCHEMA ...;WITH GRANT OPTION
GRANT SELECT ON ALL TABLES IN SCHEMA public TO reporting;\dt <schema>.* / pg_hba.conf调整 search_path 与可见对象(\dt public.*);pg_hba.conf 控制谁能连接。
SHOW search_path;ALTER ROLE app IN DATABASE app SET search_path = app, public;pg_hba.conf hostssl all all 0.0.0.0/0 scram-sha-256
ALTER ROLE app SET search_path = app, public;相关命令速查
mysql
MySQL / MariaDB 快速参考:客户端命令、DDL/DML、连接与聚合、索引、事务与备份恢复,并附带常用参数和实操示例。
38 条命令
MySQL 8.0+
redis cli
redis-cli 快速参考:连接与信息、键/字符串、哈希、列表、集合、有序集合、Stream、发布订阅、服务端管理、持久化与复制,以及诊断命令,并附带常用参数和实操示例。
42 条命令
Redis 6.2+
mongodb
mongosh 快速参考:连接、CRUD、查询运算符、聚合管道、索引、副本集、用户管理与 dump/restore,并附带最常用的 shell 写法与实操示例。
30 条命令
MongoDB 6.0+ / mongosh 1.6+
商标与使用声明
本批命令行工具速查手册为开源社区参考资料。文中涉及的各工具的名称、标识、商标(如 Git™、Docker™、Kubernetes®、kubectl、PostgreSQL®、MySQL®、Redis™、MongoDB®、Linux™、PowerShell™、Vim™ 等)均归对应权利人所有,此处仅为识别与参考之目的使用。
本速查手册的全部内容均为独立编写的简化自包含参考,**与任何官方文档不存在隶属、被认可或引用关系**。命令列表、参数说明、示例均为作者原创简化表达;如需权威信息,请参阅各工具的官方文档。
命令语法与参数可能在不同工具版本中有所差异。所示版本标签对应稳定发布版本;其他版本行为可能有所不同。本速查手册**不代表**商标权利人的任何偏好或推荐。
如商标或版权方认为本站部分内容存在权益侵害,请发送邮件至[email protected],我们在收到有效权属证明后,会在合理期限内修改或移除相关内容。
本网站不对因使用本站信息而产生的任何直接或间接损失承担法律责任。
关于 PostgreSQL
PostgreSQL 是一个开源对象关系型数据库管理系统,源自 1986 年 UC Berkeley 的 POSTGRES 项目(Michael Stonebraker),1996 年开源,1997 年正式更名为 PostgreSQL。当前稳定版是 PostgreSQL 16+,由全球社区按 PostgreSQL 许可证(类 BSD 宽松许可证)每年发布。PostgreSQL 率先实现并推广了许多后来成为标准的功能:MVCC(多版本并发控制)实现非阻塞读写、写前日志保证崩溃安全、用户自定义类型与函数、表继承、丰富索引(B-tree、hash、GiST、GIN、BRIN,加上表达式索引与部分索引)。它支持几乎全部 SQL:2003 标准,含窗口函数、CTE、递归查询、`LATERAL` 连接;扩展如 PostGIS、pg_trgm、pgvector、pgcrypto 在不 fork 服务端的前提下补齐了地理空间、模糊文本、向量相似度、密码学能力。事务型 OLTP、JSONB 文档存储、地理应用、全文搜索场景都该用它;任何性能问题都从 `EXPLAIN (ANALYZE, BUFFERS)` 入手。PostgreSQL 是本地服务——连接留在你的网络里,几乎永远不应该把端口暴露到公网。
速查页版本 1.0.0