精通PostgreSQL:解锁高效数据库管理的十大必备技巧与最佳实践

  •  作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
  •  座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
  •  个人主页:团儿.-CSDN博客

目录

前言:

正文:

一.用户管理

1.创建账号

2.设置只读权限

3.设置可操作的数据库

4.授权可操作的模式和权限

-- 授权

-- 删除账号

二.模式 Schema

使用模式的优势:

语法格式如下:

创建和当前用户同名模式(schema)

自定义创建模式(schema)

查看数据库下的所有(schema)

三.数据库管理

查询所有数据库

创建数据库

删除数据库

四.表管理

建表模板语句

查询schema中所有表

创建表

创建自增序列

创建主键序列

根据已有表结构创建表

删除表

五.索引管理

创建索引

创建唯一索引

查看索引

执行sql脚本

方式一:先登录再执行

方式二:通过psql执行

导出数据到SQL文件


前言:

在当今数据驱动的时代,数据库作为信息系统的核心组件,其重要性不言而喻。PostgreSQL,作为一款功能强大、开源的对象-关系数据库管理系统(ORDBMS),凭借其卓越的稳定性、丰富的特性集、以及对高级功能的支持(如全文搜索、地理空间数据处理等),赢得了全球范围内众多开发者和企业的青睐。无论是初创公司还是大型企业,PostgreSQL都成为了他们构建复杂应用、处理海量数据、实现数据驱动决策的首选数据库之一。

然而,要充分发挥PostgreSQL的潜力,高效地进行数据库管理至关重要。数据库管理不仅涉及日常的运维任务,如备份恢复、性能调优、安全加固等,还涵盖了数据架构设计、查询优化、并发控制等深层次的技术挑战。对于数据库管理员(DBA)和开发者而言,掌握一套PostgreSQL的常用管理操作,不仅能够提升工作效率,还能确保数据库的稳定运行和高效性能,为业务的发展提供坚实的数据支撑。

本文旨在为广大PostgreSQL用户、数据库管理员及开发者提供一份实用的指南,详细介绍PostgreSQL的常用管理操作。从基础的数据库安装与配置,到进阶的性能调优与故障排查,再到高级的数据迁移与备份恢复策略,我们将一步步带你深入PostgreSQL的世界,让你能够轻松应对各种数据库管理挑战。


正文:

一.用户管理

1.创建账号

create user 用户名 password '密码';

2.设置只读权限

alter user 用户名 set default_transaction_read_only = on;

3.设置可操作的数据库

grant all on database 数据库名 to 用户名;


4.授权可操作的模式和权限

-- 授权

grant select on all tables in schema public to 用户名;

-- 删除账号

#撤回在public模式下的权限

revoke select on all tables in schema public from 用户名;

#撤回在information_schema模式下的权限

revoke select on all tables in schema information_schema from 用户名;

#撤回在pg_catalog模式下的权限

revoke select on all tables in schema pg_catalog from 用户名;

#撤回对数据库的操作权限

revoke all on database 数据库名 from 用户名;

#删除用户

drop user 用户名;


二.模式 Schema

PostgreSQL 模式SCHEMA 可以看着是一个表的集合。一个模式可以包含视图、索引、数据类型、函数和操作符等。

相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 schema1 和 myschema 都可以包含名为 mytable 的表。

使用模式的优势:

允许多个用户使用一个数据库并且不会互相干扰。

将数据库对象组织成逻辑组以便更容易管理。

第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。

语法格式如下:

创建和当前用户同名模式(schema)

create schema AUTHORIZATION CURRENT_USER;

自定义创建模式(schema)

create schema 模式名称;

注意:如果不创建scheme,并且语句中不写scheme,则默认scheme使用内置的public。

查看数据库下的所有(schema)

select * from information_schema.schemata;


三.数据库管理

查询所有数据库

select datname from pg_database;

创建数据库

create database 数据库名 owner 所属用户 encoding UTF8;

注意:创建完数据库,需要切换到数据库下,创建和当前用户同名scheme,删除数据库后schema也会一并删除:

-- 重新登陆到新数据库下,执行如下语句

create schema AUTHORIZATION CURRENT_USER;

删除数据库

drop database 数据库名;

注意:删库前需要关闭所有会话,不然会提示:ERROR:  database "mydb" is being accessed by other users

关闭数据库所有会话

SELECT pg_terminate_backend(pg_stat_activity.pid)FROM pg_stat_activityWHERE datname='mydb' AND pid<>pg_backend_pid();


四.表管理

建表模板语句

create table "t_user" ("id" bigserial not null,"username" varchar (64) not null,"password" varchar (64) not null,"create_time" timestamp not null default current_timestamp,"update_time" timestamp not null default current_timestamp,constraint t_user_pk primary key (id));

comment on column "t_user"."id" is '主键';

comment on column "t_user"."username" is '用户名';

comment on column "t_user"."password" is '密码';

comment on column "t_user"."create_time" is '创建时间';

comment on column "t_user"."update_time" is '更新时间';

查询schema中所有表

select table_name from information_schema.tables where table_schema = 'myuser';

创建表

CREATE TABLE public.t_user ("id" BIGSERIAL NOT NULL,"username" VARCHAR(64) NOT NULL,"password" VARCHAR(64) NOT NULL,"create_time" TIMESTAMP(0) default CURRENT_TIMESTAMP not null,"update_time" TIMESTAMP(0) default CURRENT_TIMESTAMP not null);

-- 注释

COMMENT ON TABLE public.t_user IS '用户表';

COMMENT ON COLUMN public.t_user.id IS '主键';

COMMENT ON COLUMN public.t_user.username IS '用户名';

COMMENT ON COLUMN public.t_user.password IS '密码';

COMMENT ON COLUMN public.t_user.create_time IS '创建时间';

COMMENT ON COLUMN public.t_user.update_time IS '更新时间';

创建自增序列

alter sequence "t_user_ID_seq" restart with 1 increment by 1;

创建主键序列

drop index if exists "t_user_pkey";alter table "t_user" add constraint "t_user_pkey" primary key ("ID");

根据已有表结构创建表

create table if not exists 新表 (like 旧表 including indexes including comments including defaults);

删除表

drop table if exists "t_template" cascade;

五.索引管理

创建索引

drop index if exists t_user_username;create index t_user_username on t_user (username);

创建唯一索引

drop index if exists t_user_username;create index t_user_username on t_user (username);

查看索引

\d t_user

执行sql脚本

方式一:先登录再执行

\i testdb.sql

方式二:通过psql执行

psql -d testdb -U postgres -f /pathA/xxx.sql

导出数据到SQL文件

pg_dump -h localhost -p 5432 -U postgres --column-inserts -t table_name -f save_sql.sql database_name

--column-inserts #以带有列名的 `INSERT` 命令形式转储数据。

-t #只转储指定名称的表。

-f #指定输出文件或目录名。


期待您的关注~

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

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

相关文章

Games101图形学学习笔记——图形学基础

这里写目录标题 图形学基础线性代数Vector向量向量的点乘向量的叉乘 矩阵 Transform3D变换视图/相机变换 正交投影和透视投影正交投影透视投影 图形学基础 基础数学&#xff1a;线性代数&#xff0c;几何 基础物理&#xff1a;力学&#xff0c;光学 其他&#xff1a;信号处理&…

终端显示字体背景和字体颜色

【终端显示字体背景和字体颜色等使用用法】 在命令行下想要产生五颜六色的字体和背景&#xff0c;只需要加上一些颜色代码即可。 ANSI 标准规定了一种所有终端共享的指令集&#xff0c;并要求用 ASCII 的数字字符传递所有数值信息&#xff0c;用于控制 Linux 终端上的光标位置…

linux中2024新版virtuoso安装的详细步骤

前言 Virtuoso 是一个高性能的多模型数据库&#xff0c;支持关系型、文档型、图形型和RDF数据库操作。随着时间的推移&#xff0c;Virtuoso 数据库不断更新&#xff0c;尤其是2024年发布的新版本&#xff0c;带来了许多新特性和改进。本文将详细介绍如何在 Linux 环境下安装最新…

ISP面试准备2

系列文章目录 文章目录 系列文章目录前言一.如何评价图像质量&#xff1f;二.引起图像噪声的原因三. ISP3.1 ISP Pipeline主要模块3.1.1坏点校正&#xff08;Defect Pixel Correction, DPC&#xff09;3.1.2黑电平校正&#xff08;Black Level Correction, BLC&#xff09;3.1.…

形式向好、成本较低、可拓展性较高的名厨亮灶开源了。

简介 AI视频监控平台, 是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;减少企业级应用约 95%的开发成本&#xff0c;在强大视频算法加…

论文速读|形机器人的高速和抗冲击远程操作

论文地址&#xff1a;https://arxiv.org/pdf/2409.04639 本文提出了一种综合解决方案&#xff0c;用于远程控制类人机器人&#xff0c;实现了高速度和冲击抵抗的操作。通过结合无校准的运动捕捉和重定标、低延迟全身运动流式传输工具箱和高带宽的摆线驱动器&#xff0c;显著提高…

别错过!一款你不能错过的轻量级拖拽库 `drag-kit`

在开发过程中&#xff0c;如何让UI元素自由拖拽&#xff0c;是许多前端工程师面临的常见问题。尤其在构建复杂的用户交互界面时&#xff0c;能够提供灵活、便捷的拖拽功能显得尤为重要。今天我们就来深入解析一款轻量级的拖拽库——drag-kit。它不仅功能涵盖多&#xff0c;而且…

开源 AI 智能名片 S2B2C 商城小程序中的全渠道供应策略

摘要&#xff1a;本文深入探讨在开源 AI 智能名片 S2B2C 商城小程序的情境下&#xff0c;全渠道供应的运行机制。阐述各环节企业相互配合的重要性&#xff0c;重点分析零售企业在其中的关键作用&#xff0c;包括协调工作、信息传递、需求把握等方面&#xff0c;旨在实现高效的全…

国家标准和行业标准有什么区别?如何办理国家标准?

在当今复杂多样的标准体系中&#xff0c;国家标准和行业标准犹如两颗璀璨的明珠&#xff0c;各自闪耀着独特的光芒&#xff0c;它们共同为经济社会的发展提供了坚实的技术支撑。然而&#xff0c;你是否真正了解这两者之间的区别呢&#xff1f; 一、制定主体 • 国家标准&#x…

多速率信号处理-Nobel恒等式

典型的插值器的结构&#xff0c;滤波器位于插值操作后&#xff0c;意味着滤波器工作在较高的采样率下&#xff0c;对滤波器的设计带来压力。可以通过恒等变换将插值操作后置&#xff0c;滤波器前置&#xff0c;简化系统的设计。 第一恒等式 表明抽取操作位于乘加操作之后和抽…

ABeam旗下德硕管理咨询(上海)荣获知识管理领域的专业奖项—2024 China MIKE 大奖

ABeam旗下德硕管理咨询&#xff08;上海&#xff09;荣获知识管理领域的专业奖项—2024 China MIKE 大奖 近日&#xff0c;备受业界瞩目的2024 China MIKE大奖揭晓&#xff0c;ABeam集团旗下德硕管理咨询&#xff08;上海&#xff09;有限公司凭借其优秀的知识管理体系与创新实…

计算机毕业设计选题推荐-班级管理系统-教务管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

SpringCloud微服务详细笔记(一):微服务介绍--微服务拆分--RestTemplate远程调用--Nacos注册中心

目录 1.认识微服务 1.1单体架构 1.2微服务 1.3SpringCloud 2.微服务拆分 2.1服务拆分原则 2.1.1什么时候拆&#xff1f; 2.1.2怎么拆&#xff1f; 2.2微服务项目结构&#xff1a; 2.3服务拆分示例&#xff1a; 2.4远程调用 2.4.1RestTemplate 2.4.2远程调用示例 …

MVC架构的JSP快速学习(一)

目录 服务相关配置 模型介绍 基础依赖 模型图(抽象) 项目结构 控制器编写 服务相关配置 1. Tomcat配置 http://t.csdnimg.cn/9rILV 2. Maven配置 http://t.csdnimg.cn/REKu9 3. Idea配置 tomcat maven 模型介绍 虽然JSP本身不强制使用MVC&#xff0c;但它通常与Serv…

21. Revit API: 几何对象(二)- Curve

上篇讲了Revit几何对象的类层次结构&#xff0c;讲了几何元素和几何实例&#xff0c;简单提到了Solid。 这一篇呢&#xff0c;就从构成Solid的边讲起。 一、Edge&#xff08;边&#xff09; Edge在Revit中就是用来表示边的&#xff0c;并且在各种表示几何结构的类中串门。 前…

封装一个 Vue 3 流程线可视化组件

这个组件展示了一系列带有节点和箭头连接的流程线&#xff0c;并具备不同风险等级的样式和动画效果&#xff0c;非常适合大屏展示项目。 功能概述 这个流程线组件具备以下功能&#xff1a; 动态渲染&#xff1a;根据传入的数据&#xff0c;组件可以自动生成节点和箭头。风险…

计算机网络(五) —— 自定义协议简单网络程序

目录 一&#xff0c;关于“协议” 1.1 结构化数据 1.2 序列化和反序列化 二&#xff0c;网络版计算器实现准备 2.1 套用旧头文件 2.2 封装sock API 三&#xff0c;自定义协议 3.1 关于自定义协议 3.2 实现序列化和反序列化 3.3 测试 三&#xff0c;服务器实现 3.1…

分享一个基于微信小程序的医院挂号就诊一体化平台uniapp医院辅助挂号应用小程序设计(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

NVD系列语音芯片在报警器中通常应用在哪些场景中

语音芯片在各类场景中应用的最大作用就是进行语音提示和警报提示。本文将对NVD系列语音芯片应用在报警器中的场景。 1.提升电动车的安全性 当电动车遭受震动或异常移动时&#xff0c;报警器会感应到并触发报警装置&#xff0c;通常是通过发出高分贝的声音警报来吸引人们的注意…

苹果iOS/ iPadOS18 RC 版、17.7 RC版更新发布

iPhone 16 / Pro 系列新机发布后&#xff0c;苹果一同推出了 iOS 18 和 iPadOS 18 的 RC 版本&#xff0c;iOS 18 RC 的内部版本号为22A3354&#xff0c;本次更新距离上次发布 Beta/RC 间隔 12 天。 在 iOS 18 中&#xff0c;苹果给我们带来了 Apple Intelligence&#xff0c;这…