一份方便的PostgreSQL命令和查询清单

301 阅读1分钟

PostgreSQL Cheat Sheet

在使用PostgreSQL数据库时,我们收集了一份方便的PostgreSQL命令和查询清单。如果你想在小抄中加入一些内容,请联系我们@ForestAdmin!

开始使用PostgreSQL

登录并进入PostgreSQL命令行工具psql

$ sudo su - postgres psql

列出 postgres 数据库

\l

连接到postgres数据库

\c databaseName

退出PostgreSQL命令行工具psql

\q

管理PostgreSQL

检查PostgreSQL的版本

 SELECT version();

检查PostgreSQL是否已经安装

$ which psql

检查PostgreSQL是否正在运行

$ pgrep -fa -- -D | grep postgres

在Linux上重新启动PostgreSQL

# systemctl restart postgresql
// or
# service postgresql restart
// or
# /etc/init.d/postgresql restart
// or
# /sbin/service postgresql restart

在OSX上重新启动PostgreSQL

# brew services restart postgres
// or
# pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log restart

在Windows上重新启动PostgreSQL

Winkey + R
Type "services.msc"
Click "restart"

更改PostgreSQL的用户密码

$ sudo -u postgres psql
\password postgres

退出psql

\q

与PostgreSQL中的数据库互动

列出 postgres 数据库

\l

连接或切换到postgres数据库

\c databaseName

创建新的postgres数据库

CREATE DATABASE databaseName

删除 postgres 数据库

DROP DATABASE databaseName

重命名 postgres 数据库

ALTER DATABASE old_databaseName TO new_databaseName

查询postgres的JSON数据

SELECT *
FROM mytable
WHERE myfield @> '{"key1":"valueA"}'

与PostgreSQL中的表互动

列出postgres表

\dt

描述Postgres表

\d tableName

创建postgres表

CREATE TABLE tableName(	
	columnName columnType,
	columnName columnType
);

删除Postgres表

DROP TABLE tableName CASCADE

备份和恢复PostgreSQL数据库

备份Postgres数据库

$ pg_dump -d databaseName -U userName > backupFile

恢复Postgres数据库

psql databaseName < backupFile

在PostgreSQL中管理角色和权限

列出 postgres 角色

SELECT rolname FROM pg_roles;

创建Postgres用户

CREATE USER userName WITH PASSWORD 'userPassword';

删除postgres用户

DROP USER userName;

更改postgres用户的密码

ALTER ROLE userName WITH PASSWORD 'userPassword';

列出所有分配的角色 postgres

SELECT
	r.rolname,
	r.rolsuper,
	r.rolinherit,
	r.rolcreaterole,
	r.rolcreatedb,
	r.rolcanlogin,
	r.rolconnlimit,
	r.rolvaliduntil,
	ARRAY(SELECT b.rolname
		FROM pg_catalog.pg_auth_members m
		JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
		WHERE m.member = r.oid) as memberof,
	r.rolreplication
FROM pg_catalog.pg_roles r
ORDER BY 1;

授予postgres数据库的所有权限

GRANT ALL PRIVILEGES ON DATABASE databaseName TO userName;

授予postgres数据库的连接权限

GRANT CONNECT ON DATABASE databaseName TO userName;

列出特定角色的权限 postgres

SELECT table_catalog, table_schema, table_name, privilege_type
FROM   information_schema.table_privileges
WHERE  grantee = userName ORDER BY table_name;

ProstgreSQL psql 命令回顾

\?

列出所有可用的psql命令

\h COMMAND

获取特定命令的帮助

\l

列出数据库

\c databaseName

连接到数据库

\dt

列出表

\d tableName

描述表

\d+ tableName

描述表的详细信息

\n

List schemas

\ddf

列出函数

\dv

列出视图

\列表d

List users

\dy

List events

\di

List indexes

\q

退出


需要为PostgreSQL建立管理面板或GUI工具? 查看用于PostgreSQL的森林管理