PostgreSQL 速查表

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 SCHEMA
    
    1
    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

总结: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
-- psql 元命令
\l
1
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

# 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

# 模式操作(Schema)

模式是数据库中的命名空间,用于逻辑隔离表、视图等对象。默认模式为 public。

# 1. 查看模式

-- 查看当前数据库中的所有模式
SELECT * FROM information_schema.schemata;

-- 或
\dn
1
2
3
4
5

# 2. 创建模式

-- 创建模式
CREATE SCHEMA myschema;

-- 创建模式并指定所有者
CREATE SCHEMA myschema AUTHORIZATION myuser;
1
2
3
4
5

# 3. 使用模式

-- 设置搜索路径(优先查找的模式顺序)
SET search_path TO myschema, public;

-- 查看当前搜索路径
SHOW search_path;
1
2
3
4
5

# 4. 修改模式

-- 重命名模式
ALTER SCHEMA myschema RENAME TO new_schema;

-- 修改模式所有者
ALTER SCHEMA myschema OWNER TO new_owner;
1
2
3
4
5

# 5. 删除模式

-- 删除空模式
DROP SCHEMA myschema;

-- 删除模式及其包含的所有对象(级联删除)
DROP SCHEMA myschema CASCADE;
1
2
3
4
5

# 数据表操作(Table)

# 1. 查看表

-- 列出当前数据库所有表
\d

-- 查看指定表的详细信息(字段、类型、索引、约束等)
\d tablename
1
2
3
4
5
-- SQL 方式查看所有表
SELECT * FROM pg_tables ORDER BY schemaname;
1
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

# 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

# 4. 删除表

-- 删除表
DROP TABLE users;

-- 级联删除(同时删除依赖该表的对象)
DROP TABLE users CASCADE;
1
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