PostgreSQL命令有哪些?常用命令及参数详解
- 虚拟主机
- 2025-12-21
- 4
PostgreSQL(简称pgsql)是一款功能强大的开源对象关系型数据库管理系统,以其稳定性、可扩展性和丰富的功能著称,掌握pgsql命令是高效管理和操作数据库的基础,本文将详细介绍常用的pgsql命令,涵盖数据库连接、数据操作、表管理、用户权限等核心内容,并通过表格形式清晰展示命令结构,最后附上相关FAQs以解答常见问题。
数据库连接与退出
要使用pgsql命令,首先需要连接到PostgreSQL服务器,常用的连接命令如下:
psql h 主机名 p 端口号 U 用户名 d 数据库名
- h:指定数据库服务器主机名,默认为localhost。
- p:指定端口号,PostgreSQL默认端口号为5432。
- U:指定连接用户名,默认为当前系统用户名。
- d:指定连接的数据库名,若不指定,需在连接后通过c 数据库名切换。
连接成功后,命令行提示符会变为数据库名=#(超级用户)或数据库名=>(普通用户),退出当前连接可使用命令q或exit。
数据库与表管理
数据库操作
- 创建数据库:使用CREATE DATABASE语句, CREATE DATABASE mydb WITH OWNER myuser ENCODING 'UTF8';
其中OWNER指定数据库所有者,ENCODING指定字符集(默认为UTF8)。
- 查看数据库列表:在psql中执行l或list。
- 删除数据库:使用DROP DATABASE语句, DROP DATABASE mydb;
注意:删除数据库会永久删除其中所有数据,需谨慎操作。
表操作
- 创建表:使用CREATE TABLE语句, CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
其中SERIAL为自增整数类型,PRIMARY KEY定义主键,UNIQUE确保唯一性,DEFAULT设置默认值。
- 查看表结构:使用d 表名或d+ 表名(显示额外信息)。
- 修改表结构:使用ALTER TABLE语句, ALTER TABLE users ADD COLUMN age INT; ALTER TABLE users DROP COLUMN age;
- 删除表:使用DROP TABLE语句, DROP TABLE users;
数据操作(CRUD)
插入数据(INSERT)
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
支持批量插入和多行数据:
INSERT INTO users (name, email) VALUES ('李四', 'lisi@example.com'), ('王五', 'wangwu@example.com');
查询数据(SELECT)
基本查询:

常用查询条件:
- WHERE:过滤条件,如WHERE name LIKE '张%'(模糊匹配)。
- ORDER BY:排序,如ORDER BY created_at DESC(降序)。
- LIMIT:限制返回行数,如LIMIT 10。
- GROUP BY:分组,常与聚合函数(COUNT, SUM, AVG等)结合使用。
更新数据(UPDATE)
UPDATE users SET email = 'newemail@example.com' WHERE id = 1;
注意:务必添加WHERE条件,否则会更新全表数据。
删除数据(DELETE)
DELETE FROM users WHERE id = 1;
同样需谨慎使用WHERE,避免误删全表数据。
用户与权限管理
创建用户
CREATE USER myuser WITH PASSWORD 'password123';
授权
GRANT SELECT, INSERT ON users TO myuser; GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
撤销权限
REVOKE INSERT ON users FROM myuser;
查看用户权限
du 查看所有用户及其角色 z 表名 查看表的权限分配
常用psql元命令
psql提供了丰富的元命令以简化操作,以下为常用命令及其说明:

| 命令 | 说明 | 示例 |
|---|---|---|
| l | 列出所有数据库 | l |
| c 数据库名 | 切换数据库 | c mydb |
| d 表名 | 显示表结构 | d users |
| dt | 列出当前数据库所有表 | dt |
| di | 列出所有索引 | di |
| dv | 列出所有视图 | dv |
| df | 列出所有函数 | df |
| dn | 列出所有模式(Schema) | dn |
| copy 表名 TO '文件名' | 导出表数据到CSV文件 | copy users TO 'users.csv' |
| copy 表名 FROM '文件名' | 从CSV文件导入数据 | copy users FROM 'users.csv' |
| h SQL命令 | 查看SQL命令的帮助文档 | h CREATE TABLE |
| ? | 查看所有psql元命令 | ? |
数据备份与恢复
备份数据库
使用pg_dump工具:
pg_dump h localhost U myuser d mydb f mydb_backup.sql
恢复数据库
使用psql或pg_restore(对于自定义格式备份):
psql h localhost U myuser d mydb f mydb_backup.sql
相关问答FAQs
问题1:如何修改PostgreSQL用户的密码?
解答:可以使用ALTER USER命令修改密码,为用户myuser设置新密码newpassword,执行:
ALTER USER myuser WITH PASSWORD 'newpassword';
执行后需重新连接数据库使密码生效。
问题2:PostgreSQL中如何查看正在执行的SQL查询?
解答:可以通过查询系统视图pg_stat_activity获取当前会话的SQL执行情况。
SELECT pid, query, state, usename FROM pg_stat_activity WHERE state = 'active';
其中pid为进程ID,query为执行的SQL语句,state为查询状态(如active、idle等),usename为执行用户,若需终止特定查询,可使用SELECT pg_terminate_backend(pid);。
