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

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

时间:2024-09-11 09:51:31浏览次数:3  
标签:PostgreSQL 创建 解锁 public user 必备 create 数据库 schema

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

WHERE 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 #指定输出文件或目录名。


期待您的关注~

标签:PostgreSQL,创建,解锁,public,user,必备,create,数据库,schema
From: https://blog.csdn.net/xyyy060908/article/details/142120916

相关文章

  • 信创领域认证,来自工信部人才交流中心的PostgreSQL培训班
    在国家大力发展信创软件和数据库行业的背景下,PostgreSQL具有多方面的优势和机遇,具体体现在以下几个方面:1.技术优势契合信创需求:PostgreSQL数据库是一个功能强大、性能稳定、可扩展性强的开源对象关系数据库系统,支持多种数据类型(如数组、JSON、XML等),方便存储和处理半结构化......
  • 解锁生活密码,AI答案之书解决复杂难题
    本文由ChatMoney团队出品介绍说明“答案之书智能体”是您贴心的智慧伙伴,随时准备为您解答生活中的种种困惑。无论您在工作中遭遇瓶颈,还是在情感世界里迷失方向,亦或是对个人成长感到迷茫,它都能倾听您的心声,并给予准确且富有启发的回应。它并非简单地给出答案,而是深入理解您问......
  • Ai PPT制作师(解锁会员)
    输入一句PPT主题,就能快速生成一份完整的PPT对诸多职场人或者白领一族而言,日常很多工作都离不开PPT,无论是策划提案、产品评审,还是晋级答辩等场景,有时要同时兼顾多份PPT,导致手忙脚乱……想破除这种困境,这时ai创作ppt软件就能派上用场!ai创作ppt软件具备一句话生成PPT的高效创作......
  • 解锁Python中的人脸识别:Face Recognition库详解与应用
    在当今的人工智能时代,人脸识别技术已经成为了计算机视觉领域的一项重要应用。无论是在安全监控、社交媒体还是智能设备中,人脸识别都扮演着不可或缺的角色。在众多的人脸识别工具和库中,Python的FaceRecognition库以其简单易用和高效性而备受青睐。本文将深入探讨FaceRecogniti......
  • 百年码头遇见数智化:华为和天津港解锁新质生产力
     著名经济学家约瑟夫·熊彼特曾在《经济发展理论》中提出过一个观点:每一次大规模的创新,都将淘汰旧的技术和生产体系,并建立起新的生产体系,坦言“经济周期是在长波创新下运作的”。当新一轮技术革命叠加新的经济周期,意味着以创新为驱动、以前沿科技为羽翼的“新质生产力”将是开辟新......
  • Python 编程:如何巧妙运用 `abc` 模块解锁面向对象设计的新维度?
    引言在软件开发的世界里,面向对象编程(OOP)作为一门艺术,其精髓在于通过封装、继承与多态来构建可维护性高、易于扩展的系统。而在Python这门语言中,abc模块则为我们提供了一种优雅的方式来定义抽象基类(AbstractBaseClasses,ABCs),从而帮助我们更好地实践OOP的核心原则。本文将带......
  • Docker必备命令大全:从安装到多容器管理
    浪浪云活动链接:https://langlangy.cn/?i8afa52文章目录安装Docker在Ubuntu上安装Docker在CentOS上安装DockerDocker常用命令1.检查Docker版本2.管理Docker容器2.1拉取镜像2.2列出本地镜像2.3运行容器2.4列出运行中的容器2.5停止容器2.6启动容器......
  • 解锁高效驱动密码:SiLM8260A系列SiLM8260ABCS-DG 集成米勒钳位的双通道隔离驱动芯片
    附上SiLM8260A同系列型号参考:SiLM8260ADCS-DG 12.5V/11.5VSiLM8260ABCS-DG 8.5V/7.5VSiLM8260AACS-DG 5.5V/5VSiLM8260AGCS-DG 3.5V/3VSiLM8260ABCS-DG是一款集成了米勒钳位功能的双通道隔离驱动芯片,它精准地满足了上述严苛条件。具备10A的拉电流和灌电流能......
  • ChatGPT 3.5/4.0使用手册:解锁人工智能的无限潜能
    1.引言在人工智能的浪潮中,ChatGPT以其卓越的语言理解和生成能力,成为了一个革命性的工具。它不仅仅是一个聊天机器人,更是一个能够协助我们日常工作、学习和创造的智能伙伴。随着ChatGPT3.5和4.0版本的推出,其功能和应用范围得到了前所未有的扩展。本手册旨在为所有希望充分利......
  • 这个爬虫工具可以解锁复杂网站,不错~
    前几天Python抓取了一些社交网站评论数据,用的是一款低代码爬虫平台亮数据,可以生成python代码,既有现成的爬虫解锁框架,还提供代理服务。它有数据采集浏览器、网络解锁器、数据采集托管IDE三种方式,能通过简单的几十行Python代码实现复杂数据的采集。网站:https://get.brightd......