PostgreSQL 速查表为您提供了常用的 PostgreSQL 命令和语句。
切换并连接
$ sudo -u postgres psql
列出所有数据库
postgres=# \l
连接到名为 postgres 的数据库
postgres=# \c postgres
断开连接
postgres=# \q
postgres=# \!
选项 | 示例 | 描述 |
---|---|---|
[-d] <数据库> |
psql -d mydb | 连接到数据库 |
-U |
psql -U john mydb | 以特定用户身份连接 |
-h -p |
psql -h localhost -p 5432 mydb | 连接到主机/端口 |
-U -h -p -d |
psql -U admin -h 192.168.1.5 -p 2506 -d mydb | 连接远程 PostgreSQL |
-W |
psql -W mydb | 强制输入密码 |
-c |
psql -c '\c postgres' -c '\dt' | 执行 SQL 查询或命令 |
-H |
psql -c "\l+" -H postgres > database.html | 生成 HTML 报告 |
-l |
psql -l | 列出所有数据库 |
-f |
psql mydb -f file.sql | 从文件执行命令 |
-V |
psql -V | 打印 psql 版本 |
- | - |
---|---|
\h |
SQL 命令语法帮助 |
\h DELETE |
DELETE SQL 语句语法 |
\? |
PostgreSQL 命令列表 |
在 PostgreSQL 控制台中运行
显示版本
SHOW SERVER_VERSION;
显示系统状态
\conninfo
显示环境变量
SHOW ALL;
列出用户
SELECT rolname FROM pg_roles;
显示当前用户
SELECT current_user;
显示当前用户的权限
\du
显示当前数据库
SELECT current_database();
显示数据库中的所有表
\dt
列出函数
\df <模式名>
列出当前数据库中的表
\dt
SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;
全局列出表
\dt *.*.
SELECT * FROM pg_catalog.pg_tables
列出表结构
\d <表名>
\d+ <表名>
SELECT column_name, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '<表名>';
CREATE TABLE <表名>(
<列名> <列类型>,
<列名> <列类型>
);
创建带自增主键的表
CREATE TABLE <表名> (
<列名> SERIAL PRIMARY KEY
);
DROP TABLE IF EXISTS <表名> CASCADE;
如果遇到权限错误,成为 postgres 用户
sudo su - postgres
psql
授予数据库所有权限
GRANT ALL PRIVILEGES ON DATABASE <数据库名> TO <用户名>;
授予数据库连接权限
GRANT CONNECT ON DATABASE <数据库名> TO <用户名>;
授予模式权限
GRANT USAGE ON SCHEMA public TO <用户名>;
授予函数权限
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO <用户名>;
授予对所有表的选择、更新、插入、删除权限
GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO <用户名>;
授予对表的权限
GRANT SELECT, UPDATE, INSERT ON <表名> TO <用户名>;
授予对表选择的权限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <用户名>;
ALTER TABLE <表名> IF EXISTS
ADD <列名> <数据类型> [<约束>];
更新列
ALTER TABLE <表名> IF EXISTS
ALTER <列名> TYPE <数据类型> [<约束>];
删除列
ALTER TABLE <表名> IF EXISTS
DROP <列名>;
更新列为自增主键
ALTER TABLE <表名>
ADD COLUMN <列名> SERIAL PRIMARY KEY;
向带自增主键的表中插入数据
INSERT INTO <表名>
VALUES (DEFAULT, <值1>);
INSERT INTO <表名> (<列1名>,<列2名>)
VALUES ( <值1>,<值2> );
- | - |
---|---|
\d <表> |
描述表 |
\d+ <表> |
描述表(带详细信息) |
\dt |
列出当前模式的表 |
\dt *.* |
列出所有模式的表 |
\dt <模式>.* |
列出指定模式的表 |
\dp |
列出表访问权限 |
\det[+] |
列出外部表 |
- | - |
---|---|
\e [文件] |
编辑查询缓冲区(或文件) |
\ef [函数] |
编辑函数定义 |
\p |
显示内容 |
\r |
重置(清除)查询缓冲区 |
\s [文件] |
显示历史记录或将其保存到文件 |
\w 文件 |
将查询缓冲区写入文件 |
- | - |
---|---|
\l[+] |
列出所有数据库 |
\dn[S+] |
列出模式 |
\di[S+] |
列出索引 |
\du[+] |
列出角色 |
\ds[S+] |
列出序列 |
\df[antw][S+] |
列出函数 |
\deu[+] |
列出用户映射 |
\dv[S+] |
列出视图 |
\dl |
列出大对象 |
\dT[S+] |
列出数据类型 |
\da[S] |
列出聚合函数 |
\db[+] |
列出表空间 |
\dc[S+] |
列出转换 |
\dC[+] |
列出类型转换 |
\ddp |
列出默认权限 |
\dd[S] |
显示对象描述 |
\dD[S+] |
列出域 |
\des[+] |
列出外部服务器 |
\dew[+] |
列出外部数据包装器 |
\dF[+] |
列出文本搜索配置 |
\dFd[+] |
列出文本搜索字典 |
\dFp[+] |
列出文本搜索解析器 |
\dFt[+] |
列出文本搜索模板 |
\dL[S+] |
列出过程语言 |
\do[S] |
列出操作符 |
\dO[S+] |
列出排序规则 |
\drds |
列出每个数据库的角色设置 |
\dx[+] |
列出扩展 |
S
: 显示系统对象, +
: 附加详细信息
- | - |
---|---|
\c [数据库名] |
连接到新数据库 |
\encoding [编码] |
显示或设置客户端编码 |
\password [用户] |
更改密码 |
\conninfo |
显示连接信息 |
- | - |
---|---|
\a |
在未对齐和对齐之间切换 |
\C [字符串] |
设置表标题,如果无则取消设置 |
\f [字符串] |
显示或设置未对齐输出的字段分隔符 |
\H |
切换 HTML 输出模式 |
\t [on|off] |
仅显示行 |
\T [字符串] |
设置或取消设置 HTML <table> 标签属性 |
\x [on|off] |
切换扩展输出模式 |
- | - |
---|---|
\copy ... |
导入/导出表 另请参阅: copy |
\echo [字符串] |
打印字符串 |
\i 文件 |
执行文件 |
\o [文件] |
将所有结果导出到文件 |
\qecho [字符串] |
将字符串输出到输出流 |
- | - |
---|---|
\prompt [文本] 名称 |
设置变量 |
\set [名称 [值]] |
设置变量 (如果没有参数则列出所有变量) |
\unset 名称 |
删除变量 |
- | - |
---|---|
\cd [目录] |
更改目录 |
\timing [on|off] |
切换计时 |
\! [命令] |
在 shell 中执行 |
\! ls -l |
在 shell 中列出所有 |
\lo_export LOBOID 文件
\lo_import 文件 [注释]
\lo_list
\lo_unlink LOBOID
使用 pg_dumpall 备份所有数据库
$ pg_dumpall -U postgres > all.sql
使用 pg_dump 备份数据库
$ pg_dump -d mydb -f mydb_backup.sql
- | - |
---|---|
-a |
仅转储数据,不转储模式 |
-s |
仅转储模式,不转储数据 |
-c |
在重新创建之前删除数据库 |
-C |
在恢复之前创建数据库 |
-t |
仅转储指定的表 |
-F |
格式 (c : 自定义, d : 目录, t : tar) |
使用 pg_dump -?
获取完整的选项列表
使用 psql 恢复数据库
$ psql -U user mydb < mydb_backup.sql
使用 pg_restore 恢复数据库
$ pg_restore -d mydb mydb_backup.sql -c
- | - |
---|---|
-U |
指定数据库用户 |
-c |
在重新创建之前删除数据库 |
-C |
在恢复之前创建数据库 |
-e |
如果遇到错误则退出 |
-F |
格式 (c : 自定义, d : 目录, t : tar, p : 纯文本 SQL (默认)) |
使用 pg_restore -?
获取完整的选项列表
获取 postgresql.conf 的位置
$ psql -U postgres -c 'SHOW config_file'
附加到 postgresql.conf
listen_addresses = '*'
附加到 pg_hba.conf (与 postgresql.conf 位置相同)
host all all 0.0.0.0/0 md5
host all all ::/0 md5
重启 PostgreSQL 服务器
$ sudo systemctl restart postgresql