PostgreSQL 速查表
psql 登录与元命令、库表管理、增删改查、角色权限与备份恢复常用命令
登录与连接
本地 / 远程连接 PostgreSQL
| 命令 | 说明 |
|---|---|
psql | 以当前系统用户连接本地 PostgreSQL |
psql -U postgres | 使用 postgres 超级用户登录 |
psql -h 127.0.0.1 -p 5432 -U user -d db_name | 连接到指定主机/端口/数据库 |
\q | 退出 psql 客户端 |
psql 元命令
以 \\ 开头的客户端命令
| 命令 | 说明 |
|---|---|
\l | 列出所有数据库 |
\c db_name | 切换当前数据库 |
\dt | 列出当前 schema 中的表 |
\d table_name | 查看表结构 |
\d+ table_name | 查看表结构及更多信息 |
\dn | 列出所有 schema |
\du | 列出所有角色(用户) |
数据库与表管理
创建/删除数据库与典型建表
| 命令 | 说明 |
|---|---|
CREATE DATABASE db_name; | 创建数据库 |
DROP DATABASE db_name; | 删除数据库(谨慎) |
ALTER DATABASE db_name OWNER TO user; | 修改数据库所有者 |
CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT); | 使用 SERIAL 自增主键建表示例 |
DROP TABLE table_name; | 删除表(谨慎) |
ALTER TABLE table_name RENAME TO new_name; | 重命名表 |
ALTER TABLE table_name ADD COLUMN age INT; | 添加列 |
增删改查(CRUD)
与 MySQL 类似的 SQL 操作
| 命令 | 说明 |
|---|---|
INSERT INTO users (name) VALUES ('Alice'); | 插入一条数据 |
SELECT * FROM users; | 查询所有数据 |
SELECT * FROM users WHERE id = 1; | 按条件查询 |
UPDATE users SET name = 'Bob' WHERE id = 1; | 更新数据 |
DELETE FROM users WHERE id = 1; | 删除数据(谨慎) |
SELECT * FROM users ORDER BY id DESC LIMIT 10 OFFSET 0; | 排序 + 分页查询示例 |
角色与权限
CREATE ROLE / GRANT 常用组合
| 命令 | 说明 |
|---|---|
CREATE ROLE user LOGIN PASSWORD 'password'; | 创建可登录角色(类似用户) |
CREATE DATABASE db_name OWNER user; | 创建并指定所有者的数据库 |
GRANT ALL PRIVILEGES ON DATABASE db_name TO user; | 授予数据库全部权限 |
ALTER ROLE user WITH SUPERUSER; | 授予超级用户权限(谨慎) |
DROP ROLE user; | 删除角色(需先回收权限) |
备份与恢复
pg_dump / pg_restore 常用组合
| 命令 | 说明 |
|---|---|
pg_dump -U user -d db_name > backup.sql | 导出单个数据库为 SQL 文件 |
pg_dump -U user -d db_name -Fc -f backup.dump | 导出为自定义格式(支持压缩) |
psql -U user -d db_name < backup.sql | 从 SQL 文件恢复数据库 |
pg_restore -U user -d db_name backup.dump | 从自定义格式备份恢复 |