导读:本期聚焦于森沢创作的《PostgreSQL常用命令有哪些?入门必读的命令汇总与操作要点详解》,敬请观看详情。刚接触PostgreSQL的时候,命令行往往是第一道坎。psql怎么连接数据库、怎么建表、怎么导入导出数据,这些问题如果一开始没搞清楚,后面很容易走弯路。本文整理了PostgreSQL日常使用频率最高的命令,包括服务启停、连接登录、数据库与表的增删查改、用户权限管理、备份恢复等核心操作,并附上常见报错的解决办法和实用技巧,帮助你快速上手这款强大的开源数据库。

PostgreSQL作为一款功能强大的开源关系型数据库,被越来越多的项目采用。不过对于刚从MySQL或者其他数据库转过来的新手来说,PostgreSQL的命令体系有不少自己的特点,比如默认用户是postgres、连接时必须指定数据库、元命令以反斜杠开头等。如果不了解这些差异,第一次使用时很容易到处碰壁。这篇文章把日常使用中最常见的命令做了系统梳理,从服务管理到数据操作,再到备份恢复和权限管理,帮你少走弯路。

PostgreSQL常用命令有哪些?入门必读的命令汇总与操作要点详解

一、服务管理与连接登录

在正式操作数据库之前,首先要保证PostgreSQL服务正常运行。不同操作系统的管理方式略有差别,Linux下一般通过系统的服务管理工具控制,Windows下则依赖net命令或者服务管理器。

以CentOS为例,启动和停止服务的命令如下:

# 启动PostgreSQL服务
systemctl start postgresql
# 停止服务
systemctl stop postgresql
# 查看服务状态
systemctl status postgresql
# 设置开机自启
systemctl enable postgresql

服务启动后,PostgreSQL安装时会自动创建一个名为postgres的超级用户。Linux下需要先切换到这个系统用户再连接数据库,这是新手最常踩的坑之一:

# 切换到postgres用户
su - postgres
# 进入psql交互式终端
psql
# 直接连接指定数据库
psql -d mydb
# 通过网络连接,指定主机、端口、用户和数据库
psql -h 192.168.1.100 -p 5432 -U myuser -d mydb

连接成功后,命令提示符会变成类似postgres=#的样子。如果是普通用户,提示符则是=>。输入\q即可退出psql终端。

二、psql元命令:最应该优先掌握的部分

psql提供了一大批以反斜杠开头的元命令,这些命令不需要分号结尾,是日常查看数据库结构信息的主要手段。可以说掌握了元命令,日常管理工作就完成了一半。

下面这些是使用频率最高的元命令:

\l          -- 列出所有数据库
\c mydb     -- 切换到mydb数据库
\dt         -- 列出当前数据库的所有表
\d users    -- 查看users表的结构,包括字段、类型、索引
\di         -- 查看所有索引
\du         -- 查看所有用户和角色
\dn         -- 查看所有schema
\df         -- 查看所有函数
\x          -- 切换扩展显示模式,字段多时更易读
\timing on  -- 开启SQL执行耗时统计
\h          -- 查看SQL命令的帮助
\?          -- 查看元命令的帮助
\q          -- 退出psql

其中\d系列命令尤其重要。\d 表名不仅能看到字段定义,还会显示主键、外键、索引、约束等完整信息,比很多图形化工具展示得还要全面。而\x开启扩展显示后,一条字段很多的记录会纵向排列,阅读体验明显提升,查询单条数据时建议常开。

另外还有两个导出相关的元命令也很实用:\copy可以直接在客户端层面导入导出CSV文件,而服务器端的COPY命令则需要数据库服务进程有权限访问对应路径,两者使用场景要区分清楚。

三、数据库与表的常用SQL操作

创建和删除数据库是最基础的操作,注意创建数据库时不能处在事务块中,也不能删除自己当前正在连接的数据库:

-- 创建数据库
CREATE DATABASE mydb ENCODING 'UTF8';
-- 删除数据库
DROP DATABASE mydb;
-- 重命名数据库
ALTER DATABASE mydb RENAME TO newdb;

建表方面,PostgreSQL支持非常丰富的字段类型,其中自增主键的写法和MySQL不同,使用SERIAL或者GENERATED ALWAYS AS IDENTITY

CREATE TABLE users (
    id BIGSERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入数据
INSERT INTO users (username, email) VALUES ('zhangsan', 'zs@ipipp.com');

-- 查询数据
SELECT * FROM users ORDER BY created_at DESC LIMIT 10;

-- 修改表结构
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
ALTER TABLE users DROP COLUMN phone;
ALTER TABLE users RENAME COLUMN username TO user_name;

-- 更新和删除
UPDATE users SET email = 'new@ipipp.com' WHERE id = 1;
DELETE FROM users WHERE id = 1;

需要特别提醒的是,PostgreSQL执行UPDATEDELETE时如果忘记写WHERE条件,会直接操作全表且不会给出二次确认,生产环境操作前务必先写好条件或先在事务中执行,确认无误后再COMMIT

四、用户与权限管理

PostgreSQL的权限体系基于角色(ROLE)实现,用户和角色在本质上是同一个概念。创建用户并授权是部署应用前的必备操作:

-- 创建用户并设置密码
CREATE USER appuser WITH PASSWORD 'your_password';

-- 创建数据库并指定所有者
CREATE DATABASE appdb OWNER appuser;

-- 授予权限
GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser;
GRANT SELECT, INSERT, UPDATE ON users TO appuser;

-- 回收权限
REVOKE ALL PRIVILEGES ON users FROM appuser;

-- 修改用户密码
ALTER USER appuser WITH PASSWORD 'new_password';

如果遇到明明授权了却连不上的情况,多半是pg_hba.conf配置文件的限制。这个文件控制哪些IP可以用什么方式连接数据库,修改后需要执行SELECT pg_reload_conf();或重启服务才能生效。另外默认监听地址配置在postgresql.conflisten_addresses参数中,默认只监听本地,需要远程连接时要改为'*'

五、备份恢复与维护命令

备份恢复建议使用官方自带的pg_dumppg_restore工具,它们在操作系统命令行下执行而不是在psql中:

# 备份单个数据库为自定义格式(推荐,支持并行恢复)
pg_dump -U postgres -Fc mydb > mydb.dump

# 备份为纯SQL文本格式
pg_dump -U postgres -Fp mydb > mydb.sql

# 仅备份表结构
pg_dump -U postgres -s mydb > schema.sql

# 恢复自定义格式备份
pg_restore -U postgres -d mydb mydb.dump

# 恢复纯SQL备份
psql -U postgres -d mydb < mydb.sql

# 查看当前数据库连接数
SELECT count(*) FROM pg_stat_activity;

日常维护中还有几条命令值得记住。VACUUM用于回收已删除数据占用的空间,ANALYZE用于更新统计信息帮助优化器制定执行计划,REINDEX可以重建索引修复损坏。定期执行VACUUM ANALYZE是保持数据库性能的好习惯。

最后补充一个常见报错的处理:FATAL: role "xxx" does not exist通常是用户名写错或者没有创建对应角色;FATAL: database "xxx" does not exist则是psql默认用系统用户名去连接同名数据库导致的,加参数-U postgres -d postgres即可解决。把这些基础命令用熟之后,再接触复制、分区、JSONB这些进阶特性就会顺畅很多。

PostgreSQL常用命令psql命令数据库操作修改时间:2026-09-07 19:10:41

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260907/52388.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。