PostgreSQL 速查表
maiaimei 2026/11/5 PostgreSQL
# 官方文档
| 资源 | 链接 | 备注 |
|---|---|---|
| 官网文档首页 | https://www.postgresql.org/docs/ | |
| 当前版本文档 | https://www.postgresql.org/docs/current/ | |
| SQL Commands(SQL 命令) | https://www.postgresql.org/docs/current/sql-commands.html | CREATE TABLE, SELECT, ALTER TABLE, DROP DATABASE ... |
| PostgreSQL Client Applications(PostgreSQL 客户端应用程序) | https://www.postgresql.org/docs/18/reference-client.html | psql, pg_dump, pg_restore, createdb, pgbench ... |
| PostgreSQL Server Applications(PostgreSQL 服务器应用程序) | https://www.postgresql.org/docs/18/reference-server.html | postgres, initdb, pg_ctl, pg_upgrade ... |
psql (PostgreSQL 自带命令行客户端工具,交互式终端) | https://www.postgresql.org/docs/current/app-psql.html |
锁版本技巧:将 URL 中的 current 替换为大版本号(如 16),生产环境建议锁定版本。
# 常用命令
| 资源 | 链接 |
|---|---|
| SQL 命令参考 | https://www.postgresql.org/docs/current/sql-<命令名>.html |
| CREATE DATABASE | https://www.postgresql.org/docs/current/sql-createdatabase.html |
| DROP DATABASE | https://www.postgresql.org/docs/current/sql-dropdatabase.html |
| CREATE SCHEMA | https://www.postgresql.org/docs/current/sql-createschema.html |
| ALTER SCHEMA | https://www.postgresql.org/docs/current/sql-alterschema.html |
| DROP SCHEMA | https://www.postgresql.org/docs/current/sql-dropschema.html |
| CREATE TABLE | https://www.postgresql.org/docs/current/sql-createtable.html |
| ALTER TABLE | https://www.postgresql.org/docs/current/sql-altertable.html |
| DROP TABLE | https://www.postgresql.org/docs/current/sql-droptable.html |
| GRANT / REVOKE | https://www.postgresql.org/docs/current/sql-grant.html |
# 帮助命令
在 psql 里直接看某条 SQL 语法:
\h CREATE DATABASE \h DROP SCHEMA1
2看 psql 元命令帮助:
\?1
# 交互式终端(psql)
# 1. 最简登录方式
psql
1
前提条件:当前系统用户与 PostgreSQL 数据库用户同名(如已
sudo -i -u postgres切换),且数据库为本机默认端口 5432。
# 2. 不同场景下的参数补充
| 场景 | 命令 | 说明 |
|---|---|---|
| 已切换 postgres 用户 | psql | 零参数,直接以 postgres 身份进入同名数据库 |
| 普通用户指定数据库用户 | psql -U postgres | 最少需带 -U 指定用户名 |
| 指定用户 + 指定数据库 | psql -U postgres -d testdb | 同时指定用户和数据库名 |
| 远程连接 | psql -h 192.168.1.10 -U postgres -d testdb | 需额外指定主机地址 -h |
# 3. 常用参数速查
| 参数 | 全称 | 说明 |
|---|---|---|
-h | --host | 服务器地址(默认本机) |
-p | --port | 端口号(默认 5432) |
-U | --username | 数据库用户名 |
-d | --dbname | 数据库名 |
-W | --password | 强制提示输入密码 |
# 4. 完整写法对照
# 完整写法(远程连接)
psql -h <服务器地址> -p <端口号> -d <数据库名> -U <用户名>
# 本地默认连接(当前系统用户同名数据库)
psql
# 指定用户连接默认数据库
psql -U postgres
# 指定用户 + 指定数据库
psql -U postgres -d testdb
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
总结:
psql三个字母即为最少参数;其余参数均按需补充,非必填。
# 5. 常用元命令速查
| 命令 | 说明 |
|---|---|
\l | 列出所有数据库 |
\c dbname | 切换到指定数据库 |
\dn | 列出所有模式 |
\d | 列出当前数据库所有表 |
\d tablename | 查看表结构详情 |
\dt | 只列出普通表 |
\di | 列出索引 |
\du | 列出所有用户/角色 |
\q | 退出 psql |
提示:
\开头的命令是 psql 客户端元命令,不是 SQL 语句,不需要以分号结尾;SQL 语句必须以;结尾。
# 数据库操作(Database)
# 1. 查看数据库
-- SQL 方式
SELECT * FROM pg_database ORDER BY datname;
1
2
2
-- psql 元命令
\l
1
2
2
# 2. 创建数据库
CREATE DATABASE testdb;
1
# 3. 切换 / 连接数据库
\c testdb
1
# 4. 修改数据库
-- 修改数据库名称
ALTER DATABASE testdb RENAME TO newdb;
-- 修改数据库所有者
ALTER DATABASE testdb OWNER TO newowner;
-- 修改数据库配置参数
ALTER DATABASE testdb SET timezone = 'Asia/Shanghai';
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 5. 删除数据库
-- 删除数据库(无连接时)
DROP DATABASE testdb;
-- 强制删除(断开已有连接后再删除)
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname = 'testdb' AND pid <> pg_backend_pid();
DROP DATABASE testdb;
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 模式操作(Schema)
模式是数据库中的命名空间,用于逻辑隔离表、视图等对象。默认模式为
public。
# 1. 查看模式
-- 查看当前数据库中的所有模式
SELECT * FROM information_schema.schemata;
-- 或
\dn
1
2
3
4
5
2
3
4
5
# 2. 创建模式
-- 创建模式
CREATE SCHEMA myschema;
-- 创建模式并指定所有者
CREATE SCHEMA myschema AUTHORIZATION myuser;
1
2
3
4
5
2
3
4
5
# 3. 使用模式
-- 设置搜索路径(优先查找的模式顺序)
SET search_path TO myschema, public;
-- 查看当前搜索路径
SHOW search_path;
1
2
3
4
5
2
3
4
5
# 4. 修改模式
-- 重命名模式
ALTER SCHEMA myschema RENAME TO new_schema;
-- 修改模式所有者
ALTER SCHEMA myschema OWNER TO new_owner;
1
2
3
4
5
2
3
4
5
# 5. 删除模式
-- 删除空模式
DROP SCHEMA myschema;
-- 删除模式及其包含的所有对象(级联删除)
DROP SCHEMA myschema CASCADE;
1
2
3
4
5
2
3
4
5
# 数据表操作(Table)
# 1. 查看表
-- 列出当前数据库所有表
\d
-- 查看指定表的详细信息(字段、类型、索引、约束等)
\d tablename
1
2
3
4
5
2
3
4
5
-- SQL 方式查看所有表
SELECT * FROM pg_tables ORDER BY schemaname;
1
2
2
# 2. 创建表
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
1
2
3
4
5
6
2
3
4
5
6
# 3. 修改表
-- 添加列
ALTER TABLE users ADD COLUMN age INT;
-- 修改列类型
ALTER TABLE users ALTER COLUMN name TYPE VARCHAR(100);
-- 重命名列
ALTER TABLE users RENAME COLUMN name TO username;
-- 重命名表
ALTER TABLE users RENAME TO accounts;
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 4. 删除表
-- 删除表
DROP TABLE users;
-- 级联删除(同时删除依赖该表的对象)
DROP TABLE users CASCADE;
1
2
3
4
5
2
3
4
5
# 其他命令
-- 查看 PostgreSQL 版本
SELECT version();
-- 查看所有用户及密码哈希
SELECT * FROM pg_authid;
-- 断开指定数据库的所有连接
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname = 'sonar' AND pid <> pg_backend_pid();
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10