这里整理了一份非常实用的 PostgreSQL 常用命令清单,从连接到数据库、基本操作到高级功能都涵盖了。
1. 连接与退出数据库
-
连接到一个特定的数据库:
bashpsql -h <主机名> -p <端口号> -U <用户名> -d <数据库名>- 例如,连接本地的
mydb数据库:psql -h localhost -p 5432 -U postgres -d mydb - 如果连接本地默认端口(5432)的默认数据库,可以简写为:
psql -U postgres
- 例如,连接本地的
-
退出 psql 命令行界面:
sql\q
2. 数据库 (Database) 操作
-
查看所有数据库列表:
sql\l- 更详细的列表(包括大小、描述等):
\l+
- 更详细的列表(包括大小、描述等):
-
创建新数据库:
sqlCREATE DATABASE <数据库名>;- 例如:
CREATE DATABASE mynewdb;
- 例如:
-
切换/连接到另一个数据库:
sql\c <数据库名>- 例如:
\c mynewdb
- 例如:
-
删除数据库:
sqlDROP DATABASE <数据库名>;- 注意:此操作无法撤销,请谨慎使用。不能在有活跃连接时删除数据库。
3. 表 (Table) 操作
-
查看当前数据库中的所有表:
sql\dt- 更详细的列表(包括大小、描述等):
\dt+
- 更详细的列表(包括大小、描述等):
-
查看表的结构(定义):
sql\d <表名>- 例如:
\d users
- 例如:
-
创建新表:
sqlCREATE TABLE <表名> ( <列名1> <数据类型> <约束>, <列名2> <数据类型> <约束>, ... );- 例如:
sqlCREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -
删除表:
sqlDROP TABLE <表名>;- 注意:此操作会删除表和其中的所有数据,无法撤销。
-
清空表(删除所有数据,但保留表结构):
sqlTRUNCATE TABLE <表名>;
4. 查询与数据操作
-
查询数据:
sqlSELECT * FROM <表名>; -- 查询所有列 SELECT <列名1>, <列名2> FROM <表名> WHERE <条件>; -- 条件查询指定列 -
插入数据:
sqlINSERT INTO <表名> (<列名1>, <列名2>, ...) VALUES (<值1>, <值2>, ...); -
更新数据:
sqlUPDATE <表名> SET <列名1> = <新值1>, <列名2> = <新值2> WHERE <条件>; -- 务必小心!没有 WHERE 条件会更新所有行 -
删除数据:
sqlDELETE FROM <表名> WHERE <条件>; -- 务必小心!没有 WHERE 条件会删除所有行
5. 信息查询与元命令 (Meta-Commands)
这些是以反斜杠 \ 开头的特殊命令,用于获取数据库的元信息。
-
列出所有可用的命令:
\? -
查看所有角色(用户):
\du或\du+(查看详情) -
查看当前连接的信息(当前数据库、用户、端口等):
\conninfo -
查看索引:
\di -
查看视图:
\dv -
查看函数:
\df -
显示命令历史(类似 Linux 的
history):\s -
执行外部文件中的 SQL:
\i <文件路径>- 例如:
\i /path/to/myscript.sql
- 例如:
6. 用户与权限 (Role & Privilege) 管理
-
创建用户/角色:
sqlCREATE ROLE <用户名> WITH LOGIN PASSWORD '你的密码';或者更常用的:
sqlCREATE USER <用户名> WITH PASSWORD '你的密码'; -
授予权限(例如,将
mydb的所有权限授予用户myuser):sqlGRANT ALL PRIVILEGES ON DATABASE mydb TO myuser; -
修改用户密码:
sqlALTER ROLE <用户名> WITH PASSWORD '新密码';
实用技巧
- 自动补全:在
psql命令行中,按Tab键可以自动补全对象名(如数据库、表、列名)和关键字。 - 分页显示:如果结果集很长,
psql会自动使用分页器(通常是less)。按空格键向下翻页,按q退出。 - 执行系统命令:在
psql中,可以用\! <系统命令>来执行 shell 命令。例如\! ls -l。 - 编辑命令:输入命令时,可以用
\e呼出默认编辑器(如 vim)来编辑复杂的命令或函数,保存退出后会自动执行。