postgresql常用命令

\du 或者 \dg                        #列出数据库中全部用户或角色
\db                                 #显示所有的表空间
\dn                                 #列出所有的schema
\timing on                          #开启时间,后续执行sql语句即可显示执行时间
\df                                 #显示函数
\dv                                 #显示视图
\ds                                 #显示序列
\di                                 #显示索引
\dt                                 #显示匹配的表 
\d + 表名                           #查看表结构         
\h                                  #显示帮助信息
\h create table                     #显示创建表语法
\l                                  #查看包含哪些数据库(L的小写)
\c db_name                          #切换到db_name数据库
\dp 或 \z                           #显示表的权限分配情况
\pset border 2                      #输出内容内外有边框,执行此命令后执行select即可看到效果
\pset border 1                      #输出内容只有内表框
\pset border 0                      #输出内容无边框
\x                                  #把按行展示的数据变成按列展示,类似与MySQL中的\G
\i /root/a.sql;                     #执行root路径下的sql文件
psql -U test_user -d test_db -f /root/a.sql #终端命令行执行sql文件
\echo hello world                   #输出信息,可写在sql脚本中
\?                                  #更多其他命令查看
\d + 连续按两次tab键可弹出用法
create database dbname              #创建数据库
create user username with password ''  #创建用户
CREATE TABLE user (
    id SERIAL PRIMARY KEY,
    email VARCHAR(255) NOT NULL UNIQUE,
    password_hash TEXT NOT NULL,
    role VARCHAR(32) NOT NULL DEFAULT 'operator',
    email_verified BOOLEAN NOT NULL DEFAULT FALSE,
    verify_token VARCHAR(64)
);                                  #创建表
COMMENT ON TABLE user IS '用户表';  #给表添加注释
select obj_description('user'::regclass); #查看表的注释内容
GRANT ALL PRIVILEGES ON DATABASE dbname TO username; #授权
alter user postgres with password 'Abcd1234#';  #重置postgres密码
ALTER TABLE tablename DROP COLUMN cloumName; #删除单个列
ALTER TABLE guacamole_connection
DROP COLUMN col1,
DROP COLUMN col2,
DROP COLUMN col3;               #删除多个列
# 导出完整数据:格式:pg_dump -U 用户名 -d 数据库名 -h 主机 -p 端口 -f 导出文件.sql
pg_dump -U username -d dbname -h localhost -p 5432 -f full_backup.sql

# 导入数据到数据库中,最好使用postgres用户,否则会提示权限不足
psql -U postgres -d dbname -h localhost -p 5432 -f full_backup.sql

新建一个库,如果还想用某个普通用户连接并让程序自动建表,就需要给这个库里的 public schema 授权,例如:

CREATE DATABASE newdb;

\c newdb

GRANT USAGE, CREATE ON SCHEMA public TO appuser;

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO appuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO appuser;

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL ON TABLES TO appuser;

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL ON SEQUENCES TO appuser;

GRANT CONNECT ON DATABASE newdb TO appuser; #连接库的权限