超详细postgresql基础语法和备份恢复

postgresql基础语法

\l 				查看所有库\c ceshi(库名)	进入对应库\d				查看所有表\q				退出数据库\help			查询语法使用方法\du+			查看数据库用户\dp+			查看数据库用户权限\db+			查看表空间

查看所有用户

select * from pg_user;

创建用户

create user ceshi with password '123456';

修改用户密码

alter user ccxe with password '123456789';

删除用户

drop user ceshi;

创建库

create database ceshi(库名);

删除数据库

drop database ceshi(库名);

创建表

create table business_order(表名)(id serial primary key,order_no varchar(255),sku_name varchar(255));

插入数据

insert into business_order(order_no,sku_name)values('20221126000001','iphone14 plus');

查看表数据

select * from business_order;

查看表结构

\d business_order

删除表

drop table business_order;

查看库里面的所有表

SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name;

过滤business_order表中id大于2的所有数据

select * from business_order where id > 2;

获取数据库实例连接数

select count(*) from pg_stat_activity;

查询当前连接数详细信息

select * from pg_stat_activity;

查询数据库中各个用户名对应的数据库连接数

select usename, count(*) from pg_stat_activity group by usename; 

修改business_order表中 id = 3 的 order_no的值

update business_order set order_no = 20221126000007 where id = 3;

删除business_order表中 id为2的数据

delete from business_order where id = 2;

查询business_order表中 order_no字段以2开头的数据

select * from business_order where order_no::text like '2%';

限制查询出来的数量为2

select * from business_order limit 2;

查询business_order表中的数据,并以id进行升序排列,asc表示升序

select * from business_order order by id asc;

查询business_order表中的数据,并以id进行降序排列,desc表示降序

select * from business_order order by id desc;

赋予用户对库的权限

grant all privileges on database mydb to testuser;

取消用户对数据库的权限

revoke all on database mydb from testuser;

查看用户权限

select * from pg_roles;

查看test用户的权限

SELECT * FROM pg_roles WHERE rolname='test';

将当前数据库下cehi的表都授权于 test

grant all privileges on all tables in ceshi to test ;

将单个表授权给test

grant select on table mytable to test ;

将库里面的所有表授权给test用户

grant all on all tables in schema public to test;

授权test用户在table_name表中能执行增删改查的权限

grant select, insert, update, delete on table_name to test;

撤销test用户在table_name表中的权限

revoke select, insert, update, delete on table_name to test;

查看文件默认存放位置

show config_file;

角色属性说明

login		只有具有 LOGIN 属性的角色可以用做数据库连接的初始角色名
superuser		数据库超级用户
createdb		创建数据库权限
createrole		允许其创建或删除其他普通的用户角色(超级用户除外)
replication	做流复制的时候用到的一个用户属性,一般单独设定。
password		在登录时要求指定密码时才会起作用,比如md5或者password模式,跟客户端的连接认证方式有关
inherit		用户组对组员的一个继承标志,成员可以继承用户组的权限特性

创建角色

CREATE ROLE david;  //默认不带LOGIN属性

赋予登陆权限

ALTER ROLE david WITH LOGIN ;

创建角色bella 并赋予其CREATEDB 的权限

CREATE ROLE bella CREATEDB ;

创建角色renee 并赋予其创建数据库及带有密码登录的属性

CREATE ROLE renee CREATEDB PASSWORD 'abc123' LOGIN;

赋予renee 创建角色的权限

ALTER ROLE renee WITH CREATEROLE;

赋予david 带密码登录权限

ALTER ROLE david WITH PASSWORD 'ufo456';

设置sandy 角色的有效期

ALTER ROLE sandy VALID UNTIL '2019-04-24';

索引

创建索引

在business_order表的order_no列上创建一个名为idx_name_order的索引

create index idx_name_order on business_order(order_no);

通过索引查找数据

select * from business_order where order_no = '20221126000001';

查看对应表的索引

\d business_order

查看所有的索引

\di

删除索引

drop index idx_name_order;
B-树索引(B-Tree Index)

创建 B-树索引的示例

CREATE INDEX idx_last_name ON employees (last_name);

删除 B-树索引的示例

DROP INDEX idx_last_name;
唯一索引(Unique Index)

创建唯一索引的示例

CREATE UNIQUE INDEX idx_employee_id ON employees (employee_id);

删除唯一索引的示例

DROP INDEX idx_employee_id;
主键索引(Primary Key Index)
主键索引在创建主键约束时自动创建,因此不需要单独创建或删除。
外键索引(Foreign Key Index)
外键索引是在创建外键约束时自动创建的,因此不需要单独创建或删除。
全文索引(Full-Text Index)

创建全文索引的示例

CREATE INDEX idx_content ON articles USING gin (content gin_trgm_ops);

删除全文索引的示例

DROP INDEX idx_content;
部分索引(Partial Index)

创建部分索引的示例

CREATE INDEX idx_high_salary ON employees (salary) WHERE salary > 100000;

删除部分索引的示例

DROP INDEX idx_high_salary;
哈希索引(Hash Index)

创建哈希索引的示例

CREATE INDEX idx_last_name ON employees USING hash (last_name);

删除哈希索引的示例

DROP INDEX idx_last_name;

postgresql备份和恢复

实际工作中会对数据库进行备份和还原,备份主要有三种格式.bak 即压缩的二进制 .sql 即明文存储 .tar 即tarball压缩格式 数据库备份分单数据库备份,使用 pg_dump 命令;所有数据库备份,使用 pg_dumpall 命令

pg_dump 常用选项

1. pg_dump支持精确指定要备份的表、schema、和database2. 备份文件可以是SQL文件格式、自定义压缩格式或者tar包格式通用选项:-f, --file=FILENAME          		输出文件名或目录名-F, --format=c|d|t|p         		输出文件格式(自定义、目录格式、tar包格式、纯文本)-j, --jobs=NUM               		使用多个并行作业进行转储-v, --verbose                		详细信息模式详细模式:-b, --blobs                  		在转储中包括大对象-c, --clean                  		在重新创建之前,先清除(删除)数据库对象-C, --create                 		在转储中包括命令,以便创建数据库(包括建库语句,无需在导入之前先建数据库)-n, --schema=SCHEMA          	只转储指定名称的模式-N, --exclude-schema=SCHEMA  		不转储已命名的模式-t, --table=TABLE            		只转储指定名称的表--column-inserts             		以带有列名的INSERT命令形式转储数据控制输出内容选项:-d, --dbname=DBNAME          	数据库名-h, --host=HOSTNAME          		数据库服务器的主机名或套接字目录-p, --port=PORT              		数据库服务器的端口号-U, --username=NAME          	以指定的数据库用户联接-w, --no-password            		永远不提示输入口令-W, --password               		强制口令提示 (自动)--role=ROLENAME              	在转储之前执行SET ROLE命令

备份某个database,备份结果以自定义压缩格式输出:

pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f mydb.backup(自定义文件名) mydb(库名)

备份某个database,备份结果以SQL文本格式输出,输出结果要包含CREATE DATABASE 语句:

pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f mydb.sql mydb

备份某个database中所有名称以"pay"开头的表,备份结果以自定义压缩格式输出:

pg_dump -h localhost -p 5432 -U someuser -F c -b -v -t *.pay* -f pay.backup mydb

备份某个database中hr和payroll这两个schema中的所有数据,备份结果以自定义压缩格式输出:

pg_dump -h localhost -p 5432 -U someuser -F c -b -v -n hr -n payroll -f hr.backup mydb

备份某个database中除public schema中的数据以外的所有数据,备份结果以自定义压缩格式输出:

pg_dump -h localhost -p 5432 -U someuser -F c -b -v -N public -f all_sch_except_pub.backup mydb

将数据备份为SQL文本文件,且生成INSERT语句,该文件可以用于低版本的PostgreSQL或其它支持SQL的非PostgreSQL数据库

pg_dump -h localhost -p 5432 -U someuser -F p --column-inserts -f select_tables.backup mydb

pg_dumpall 常用选项

1. pg_dumpall不支持导出SQL文件以外的其他格式2. pg_dumpall可以将当前所有database数据导出为SQL文本3. 可以同时导出表空间定义和角色等全局对象4. 建议每天对角色和表空间定义等全局对象进行备份,但不建议每天使用pg_dumpall来备份全库数据通用选项:-f, --file=FILENAME          	输出文件名-v, --verbose                	详细信息模式控制输出内容选项:-a, --data-only              	仅转储数据,而不转储schema-g, --globals-only           	仅转储全局对象,而不转储数据库-r, --reles-oly              	仅转储角色,而不转储数据库和表空间-s, --schema-only            	仅转储shema,而不转储数据--inserts                    	以INSERT命令(而非COPY命令)的形式转储数据连接选项:-d, --dbname=DBNAME         数据库名-h, --host=HOSTNAME          	数据库服务器的主机名或套接字目录-l, --database=DBNAME        	代替默认数据库-p, --port=PORT              	数据库服务器的端口号-U, --username=NAME          以指定的数据库用户联接-w, --no-password            	永远不提示输入口令-W, --password               	强制口令提示 (自动)--role=ROLENAME             在转储之前执行SET ROLE命令

pg_dumpall备份数据库

pg_dumpall -h localhost -U postgres -p 5432 -v -f /tmp/all.backup

pg_dumpall仅备份角色和表空间定义

pg_dumpall -h localhost -U postgres --port=5432 -f myglobals.sql --globals-only

pg_dumpall仅需备份角色定义而无需备份表空间

pg_dumpall -h localhost -U postgres --port=5432 -f myroles.sql --roles-only

PostgreSQL支持以下两种数据恢复方式

使用psql来恢复pg_dump或pg_dumpall工具生产的sql文本格式的数据备份使用pg_restore工具来恢复由pg_dump工具生产的自定义压缩格式、tar包格式或者目录格式备份

恢复一个SQL备份文件并忽略过程中可能发生的所有错误

psql -U postgres -f myglobals.sql

恢复一个SQL备份文件,如遇错误则立即停止恢复

psql -U postgres --set ON_ERROR_STOP=on -f myglobals.sql

将SQL文本中的数据恢复到某个指定的database

psql -U postgres -d mydb(库名) -f select_objects.sql

使用pg_restore进行恢复

pg_restore 常用参数通用选项:-d, --dbname=DBNAME         数据库名-f, --file=FILENAME          	输入文件名-F, --format=c|d|t           	输入文件格式(可以自动识别)-v, --verbose                	详细信息模式详细模式:-a, --data-only              	仅恢复数据,而不恢复schema-C, --create                 	创建目标数据库-j, --jobs=NUM               	使用多个并行作业进行恢复-s, --schema-only            	仅恢复shema,而不恢复数据--section=SECTION          	恢复命名部分(包括三个部分:pre-data,data以及post-data。data部分包含表记录数据、大对象数据以及序列的值;\post-data部分包含索引、触发器、规则和约束的定义;\pre-data部分包含除此外其他所有的对象定义)控制输出内容选项:-h, --host=HOSTNAME          	数据库服务器的主机名或套接字目录-p, --port=PORT              	数据库服务器的端口号-U, --username=NAME          以指定的数据库用户联接-w, --no-password            	永远不提示输入口令-W, --password               	强制口令提示 (自动)--role=ROLENAME             	在转储之前执行SET ROLE命令

先创建目标数据库

create databases mydb;

执行恢复

pg_restore -d mydb --jobs=4 --verbose mydb.backup

如果备份和恢复使用相同的database,则可以通过添加–create选项省去单独创建库的过程

pg_restore --dbname=postgres --create --jobs=4 --verbose mydb.backup--create选项,必须先连接数据库,才能创建数据库,所有指定--dbname=postgres9.2版本或更新的pg_restore支持--section选项,实现仅恢复表结构而不恢复表数据,创建模板数据库时可以使用这个方法CREATE DATABASE mydb2;pg_restore --dbname=mydb2 --section=pre-data --job=4 mydb.backup

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结合Mockjs与Bus事件总线搭建首页导航和左侧菜单

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《ELement》。🎯🎯 &#x1…

Python:pyts库中的GramianAngularField

您想要使用pyts库中的GramianAngularField类,这是一个用于时间序列数据图像转换的工具。要使用这个类,首先确保您已经安装了pyts库。如果尚未安装,您可以使用以下命令来安装它: pip install pyts一旦安装完成,您可以通…

如何使用ArcGIS Pro将等高线转DEM

通常情况下,我们拿到的等高线数据一般都是CAD格式,如果要制作三维地形模型,使用栅格格式的DEM数据是更好的选择,这里就为大家介绍一下如何使用ArcGIS Pro将等高线转DEM,希望能对你有所帮助。 创建TIN 在工具箱中选择“…

C/C++大写字母的判断 2023年5月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C大写字母的判断 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 C/C大写字母的判断 2023年5月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 输入一个字符,判…

数组01-二分查找算法

目录 数组如何实现随机访问 两个关键词 数组的特点 根据下标随机访问数组元素 为什么数组要从0开始编号,而不是从1开始 LeetCode之路——704. 二分查找 Code 二分查找算法 数组如何实现随机访问 数组(Array)是一种线性表数据结构。它…

【计算机网络】IP协议(上)

文章目录 TCP与 IP之间的关系IP地址的认识协议报头格式1. 报头和有效载荷如何分离?2. 8位协议3. 4位版本4. 8位服务类型5. 16位总长度6. 8位生存时间 TTL 网段划分IP地址的划分 子网划分CIDR的提出如何理解CIDR TCP与 IP之间的关系 如:假设 你上高中时&…

OpenCV项目开发实战--主成分分析(PCA)的特征脸应用(附C++/Python实现源码)

什么是主成分分析? 这是理解这篇文章的先决条件。 图 1:使用蓝线和绿线显示 2D 数据的主要组成部分(红点)。 快速回顾一下,我们了解到第一个主成分是数据中最大方差的方向。第二主成分是空间中与第一主成分垂直(正交)的最大方差方向,依此类推。第一和第二主成分红点(2…

Halcon File相关算子(一)

(1) list_files( : : Directory, Options : Files) 功能:返回给定的目录下的所有文件。 控制输入参数:Directory :文件路径目录; 控制输入参数:Options:可选项,默认为files; 控制…

Linux命令行操作:使用“more“命令进行分页显示

文章目录 1. 引言1.1 介绍Linux操作系统和命令行界面什么是Linux操作系统?为什么命令行界面在Linux中如此重要? 1.2 介绍Linux中的分页显示命令分页显示命令的作用与意义不同分页显示命令的比较 2. "more"命令的基本用法2.1 安装和启动"m…

Crypto:一眼就解密

题目 根据题目给出的信息可知,flag的为base64编码,数字后面的可以知道为base64编码,解码可得

数据结构上机1

1、题目&#xff1a; 将1~10存入数组a[10]&#xff0c;并将其逆序输出 #define _CRT_SECURE_NO_WARNINGS 1 //(1) 将1~10存入数组a[10]&#xff0c;并将其逆序输出#include <stdio.h>int main() {int a[10];// 将1到10存入数组a[10]for (int i 0; i < 10; i){a[i] i…

6聚合根与资源库 #

本系列包含以下文章&#xff1a; DDD入门DDD概念大白话战略设计代码工程结构请求处理流程聚合根与资源库&#xff08;本文&#xff09;实体与值对象应用服务与领域服务领域事件CQRS 案例项目介绍 # 既然DDD是“领域”驱动&#xff0c;那么我们便不能抛开业务而只讲技术&…

蓝桥杯打卡Day15天

文章目录 买不到的数目错误票据 一、买不到的数目OJ链接 本题思路:引理&#xff1a;给定a&#xff0c;b&#xff0c;若dgcd(a,b)>1 ,则一定不能凑出最大数。结论&#xff1a;如果 a,b均是正整数且互质&#xff0c;那么由 axby,x≥0,y≥0 不能凑出的最大数是 ab−a−b。 证…

从技术创新到应用实践,百度智能云发起大模型平台应用开发挑战赛!

大模型已经成为未来技术发展方向的重大变革&#xff0c;热度之下更需去虚向实&#xff0c;让技术走进产业场景。在这样的背景下&#xff0c;百度智能云于近期发起了“百度智能云千帆大模型平台应用开发挑战赛”。 挖掘大模型落地应用 千帆大模型平台应用开发挑战赛启动 在不久前…

基于 CPU 在docker 中部署PaddleOCR

1. 拉取镜像 docker pull registry.baidubce.com/paddlepaddle/paddle:2.4.0注&#xff1a;写该文章时&#xff0c;Paddle 最新版本为2.5.1&#xff0c;但是在实际安装中会出现与 PaddleHub 2.3.1版本的冲突&#xff0c;故采用2.4.0版本 2. 构建并进入容器 docker run --name…

4年从外包到外企,一个测试老鸟的自述

4年前&#xff0c;我拖着行李箱来到北京&#xff0c;成为了一名北漂&#xff0c;离开了校园的庇护&#xff0c;只身一人&#xff0c;想要在这片陌生的地方闯出一番名堂&#xff0c;可最后却不得人意&#xff0c;面临着所有北漂群体的共同困局&#xff0c;没有归属感&#xff0c…

轻量服务器是不是vps ?和vps有什么区别

​  轻量型服务器是介于云服务器和共享型服务器之间的一种解决方案。它提供较为独立的资源分配&#xff0c;但规模较小&#xff0c;适用于中小型网站和应用程序。轻量型服务器的硬件资源来源于大型的公有云集群的虚拟化技术。轻量型服务器的性能和带宽可能会稍逊于云服务器。…

初识C语言——详细入门(系统性学习day4)

目录 前言 一、C语言简单介绍、特点、基本构成 简单介绍&#xff1a; 特点&#xff1a; 基本构成&#xff1a; 二、认识C语言程序 标准格式&#xff1a; 简单C程序&#xff1a; 三、基本构成分类详细介绍 &#xff08;1&#xff09;关键字 &#xff08;2&#xf…

HDMI之HDCP 2.3

Authentication and Key Exchange Without Stored Km With Stored Km HDCP2Version DDC时序 协议截图 Bit2为1,可知DUT设备支持HDCP 2.2及以上版本 RxStatus DDC时序 协议截图 <

消息队列-rabbitMq

消息队列&#xff08;MQ&#xff09;到底能干什么&#xff1f; MQ全称为Message Queue&#xff0c;也就是消息队列&#xff0c;是应用程序和应用程序之间的通信方法。 在微服务盛行的当下&#xff0c;MQ被使用的也是越来越多&#xff0c;一般常用来进行业务异步解耦、解耦微服务…