PostgreSQL 免费的对象-关系数据库

news2024/10/6 14:35:37

目录

一、什么是数据库

二、ORDBMS 的一些术语

三、PostgreSQL 概述

四、PostgreSQL数据库优点和缺点

4.1PostgreSQL数据库的优点

4.2PostgreSQL数据库的缺点

4.3PostgreSQL 特征

五、Linux 上安装 PostgreSQL

5.1Yum 安装 PostgreSQL

5.1.1安装postgreSQL的官方yum仓库

5.1.2选择你要安装的版本

5.1.3初始化数据库

5.1.4启用并设置自动启动

5.2编译安装 

5.2.1安装包介绍

六、数据库操作

6.1基本操作命令

6.1.1修改用户密码

6.2SQL语句分类

6.2.1SQL通用语法

6.2.2 SQL分类

6.3DDL语句

6.3.1CREATE创建

6.3.1.1创建数据库

6.3.1.2切换数据库

6.3.1.3创建表

6.3.2ALTER修改

6.3.2.1添加字段

6.3.2.2修改字段名称

6.3.3DROP删除

6.3.3.1删除表

6.4DML语句

6.4.1插入数据

6.4.2更新数据

6.4.3删除数据

6.5DQL语句

6.5.1基本查询

6.5.2条件查询

6.5.2.1 比较运算符

6.5.2.2逻辑运算符

6.5.3排序查询

6.5.3.1升序排序

6.5.3.2降序排序

6.5.3.3去重、压缩

6.5.4limit子句

6.5.5 as 别名

6.5.5.1设置字段别名

6.5.6子查询

6.5.6.1 EXISTS关键字

6.5.6.2IN关键字

6.6DCL语句

6.6.1创建用户

6.6.2用户授权

6.6.2.1用户库授权

6.6.2.2用户表授权

6.6.2.3查看权限

6.6.3撤销权限与删除用户

6.6.4角色


一、什么是数据库

  • ORDBMS(对象关系数据库系统)是面向对象技术与传统的关系数据库相结合的产物,查询处理是 ORDBMS 的重要组成部分,它的性能优劣将直接影响到DBMS 的性能。
  • ORDBMS在原来关系数据库的基础上,增加了一些新的特性。
  • RDBMS 是关系数据库管理系统,是建立实体之间的联系,最后得到的是关系表
  • OODBMS 面向对象数据库管理系统,将所有实体都看成对象,并将这些对象类进行封装,对象之间的通信通过消息 OODBMS 对象关系数据库在实质上还是关系数据库 

二、ORDBMS 的一些术语

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

三、PostgreSQL 概述

PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。

PostgreSQL 开发者把它念作 post-gress-Q-L

四、PostgreSQL数据库优点和缺点

4.1PostgreSQL数据库的优点

  1. 可靠性与稳定性:PostgreSQL以其出色的稳定性和可靠性著称,能够保证长时间无故障运行,尤其适合企业级应用和对数据完整性要求较高的场景。

  2. 全面的标准SQL支持:严格遵循ACID属性,并高度符合SQL标准,支持丰富的SQL特性,如窗口函数、递归查询、CTEs(公用表表达式)等。

  3. 强大的数据类型与存储:支持多种复杂数据类型,包括数组、JSON、XML、HSTORE、Range类型等。同时,PostgreSQL的表分区、索引、物化视图等功能提高了数据管理和查询性能。

  4. 安全性:提供了细粒度的访问控制,支持行级和列级的安全策略,可通过SSL加密通信,并有良好的审计功能。

  5. 扩展性:通过丰富的插件体系,可以很容易地添加新的数据类型和功能,例如全文搜索、地理位置索引(通过PostGIS扩展)、JSONB查询优化等。

  6. 高可用与容灾:支持逻辑复制、物理复制、热备和读写分离,能够构建高可用的集群环境。

  7. 社区与生态系统:PostgreSQL拥有活跃的开源社区和广泛的用户群,有许多周边工具和框架支持,为企业级应用提供丰富的解决方案。

  8. 完全开源免费:相对于oracle数据库,postgresql数据库完全开源免费,可以随意使用,且不会被其它公司控制,而oracle数据库属于商业数据库,不完全开放,而MySQL数据库先是被SUN公司收购,而后又被Oracle公司收购,在这之后,版本不再更新,InnoDB引擎也被Oracle控制

4.2PostgreSQL数据库的缺点

  1. 横向扩展能力:虽然PostgreSQL支持一定的水平扩展,如逻辑复制和流复制,但相比某些天生设计为分布式数据库系统的解决方案,其在大规模集群扩展方面的操作相对复杂,尤其是处理极高并发读写负载时。

  2. 内存占用较大:在处理大量并发连接或复杂查询时,PostgreSQL可能会消耗较多内存,尤其对于大型数据库实例,内存管理需要精细调整。

  3. NoSQL功能有限:虽然PostgreSQL支持JSONB等非关系型数据存储,但在处理某些NoSQL数据库擅长的大规模非结构化数据存储和查询时,不如专门的NoSQL数据库那样高效。

  4. 入门门槛较高:相比于一些轻量级或专为Web开发优化的数据库系统,PostgreSQL的复杂特性和配置项可能让初学者感到有些难以掌握。

  5. 性能调优复杂:对于某些特定场景下的性能优化,可能需要深入了解PostgreSQL的工作原理和内部机制,对普通用户来说,优化过程可能会显得较为复杂。

4.3PostgreSQL 特征

  • 函数:通过函数,可以在数据库服务器端执行指令程序。

  • 索引:用户可以自定义索引方法,或使用内置的 B 树,哈希表与 GiST 索引。

  • 触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器通常由INSERT或UPDATE语句触发。

  • 多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每个用户提供了一个数据库的"快照",用户在事务内所作的每个修改,对于其他的用户都不可见,直到该事务成功提交。

  • 规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。

  • 数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据

    等。
  • 全文检索:通过 Tsearch2 或 OpenFTS,8.3版本中内嵌 Tsearch2。

  • NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 数据库的外部数据包装器。

  • 数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL

五、Linux 上安装 PostgreSQL

PostgreSQL: The world's most advanced open source database

这里是官网,点击菜单栏上的 Download ,可以看到这里包含了很多平台的安装包,包括 Linux、Windows、Mac OS等 。

PostgreSQL官网

https://www.postgresql.org/

国产数据库排行

https://www.modb.pro/dbRank

PostgreSQL中文社区

http://www.postgres.cn/v2/document

全球数据库排行

https://db-engines.com/en/

选择需要安装的软件版本及环境

5.1Yum 安装 PostgreSQL

​systemctl stop firewalld
setenforce 0

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
#安装postgreSQL的官方yum仓库

yum install -y postgresql14-server
#安装postgresql14-server,14为版本号,可以选择自己想要安装的版本

​/usr/pgsql-14/bin/postgresql-14-setup initdb
#初始化数据库,创建系统表空间、全局对象以及其他必须的内部数据库

systemctl start postgresql-14
systemctl enable postgresql-14
#启用并设置自动启动

5.1.1安装postgreSQL的官方yum仓库

5.1.2选择你要安装的版本

安装postgresql14-server,14为版本号,可以选择自己想要安装的版本

5.1.3初始化数据库

初始化数据库,创建系统表空间、全局对象以及其他必须的内部数据库

yum安装完毕之后直接启动会报错,需要先执行初始化命令,如果没有执行初始化,直接启动服务时,数据库集群不存在,就会报错

5.1.4启用并设置自动启动

5.2编译安装 

5.2.1安装包介绍

这六个文件分别是 PostgreSQL 14.1版本的源代码压缩包及其相关的校验文件。以下是它们之间的区别:

  • postgresql-14.1.tar.bz2:这是 PostgreSQL 14.1版本的源代码压缩包,使用 bzip2 压缩。可以使用该文件进行手动编译和安装 PostgreSQL。
  • postgresql-14.1.tar.bz2.md5:这个文件包含了 postgresql-14.1.tar.bz2 文件的 MD5 校验值,用于验证下载文件的完整性。可以使用 md5sum 工具来验证文件的 MD5 值。
  • postgresql-14.1.tar.bz2.sha256:这个文件包含了 postgresql-14.1.tar.bz2 文件的 SHA-256 校验值,用于验证下载文件的完整性。可以使用 sha256sum 工具来验证文件的 SHA-256 值。
  • postgresql-14.1.tar.gz:这是 PostgreSQL 14.1 版本的源代码压缩包,使用 gzip 压缩。可以使用该文件进行手动编译和安装 PostgreSQL
  • postgresql-14.1.tar.gz.md5:这个文件包含了 postgresql-14.1.tar.gz 文件的 MD5 校验值,用于验证下载文件的完整性。可以使用 md5sum 工具来验证文件的 MD5 值。
  • postgresql-14.1.tar.gz.sha256:这个文件包含了 postgresql-14.1.tar.gz 文件的 SHA-256 校验值,用于验证下载文件的完整性。可以使用 sha256sum 工具来验证文件的 SHA-256 值。
  • 通常情况下,可以选择下载其中一个 .tar.bz2 或 .tar.gz 的压缩包,然后使用相应的校验文件(.md5 或 .sha256)验证下载的文件是否完整
  • .bz2 和 .gz 分别是两种不同的压缩格式,它们在本质上是不同的压缩算法
  • 在选择使用哪一种格式的安装包时,主要的考虑因素包括压缩率、解压速度、以及个人的偏好

六、数据库操作

6.1基本操作命令

| 命令       | 作用                                           
| ---------- | ----------------------------------------------
| \l         | 查看系统中现存的数据库                          
| \q         | 退出客户端程序psql                             
| \dt        | 查看表                                        
| \d         | 查看表结构                                     
| \di        | 查看索引                                       
| \c         | 从一个数据库中转到另一个数据库中                 
| create     | 创建数据库、表、用户等                          
| alter      | 修改表结构                                     
| insert     | 添加数据                                       
| update     | 修改数据                                       
| drop       | 删除                                           
| delete     | 删除数据                                       
| \help或\h  | 显示所有SQL语句用法                             
| \h SQL语句 | 显示具体的SQL语句用法。例如 \h create database   
| \?         | 显示所有以\开头的命令                          

6.1.1修改用户密码

6.2SQL语句分类

SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准计算机语言,它涵盖了数据定义、数据查询、数据操作(增删改)以及数据控制四大功能

6.2.1SQL通用语法

  • SQL语句可以单行或者多行书写,以分号结尾;
  • SQL语句可以使用空格/缩进来增强语句的可读性。
  • MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

6.2.2 SQL分类

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库访问权限

6.3DDL语句

DDL(Data Definition Language,数据定义语言)是SQL中的一种语句集合,主要用于创建、修改和删除数据库中的结构对象,如数据库、表、视图、索引、触发器、存储过程等

常用语句有:CREATE(创建),DROP(删除),ALTER(修改)

6.3.1CREATE创建

CREATE语句主要用于创建库,表,以及用户等操作

su - postgres

psql
6.3.1.1创建数据库

6.3.1.2切换数据库

6.3.1.3创建表

语法为:create table table_name (字段1...字段类型[约束],字段2...字段类型....[约束]);

create table kendeji (id int not null,name varchar(15),age varchar(3),address varchar(15),section char(3));

6.3.2ALTER修改

ALTER语句主要用于修改字段的信息或者插入新的字段

6.3.2.1添加字段

添加字段的基本语法为:alter table table_name add cloumn [字段][类型]

alter table kendeji add column cardid varchar(10);

6.3.2.2修改字段名称

修改字段名称的基本语法为:alter table table_name rename cloumn [old字段] to [new字段];

alter table kendeji rename column id to num;

6.3.3DROP删除

DROP主要用于对库、表、用户等进行删除操作

6.3.3.1删除表

删除表基本语法为:drop table table_name;

删除库的语法为:drop database database_name;

 #切换到其它库,防止删除库的时候因为占用库导致删除失败

6.4DML语句

DML(Data Manipulation Language,数据操纵语言)是SQL中用于操作数据库表中数据的指令集。它主要涵盖以下几种类型的语句

插入数据(INSERT):在表中插入新的数据

更新数据(UPDATE):更新表中现有的数据

删除数据(DELETE):删除表中的数据

6.4.1插入数据

插入数据的语法为:
指定字段添加: insert into table_name (字段1,字段2...) values (值1,值2...);
全部字段添加: insert into table_name values (值1,值2...);
批量添加数据: insert into table_name values (值1,值2...),(值1,值2...)...;

[root@localhost ~]#su - postgres
上一次登录:六 4月 20 11:36:56 CST 2024pts/2 上
-bash-4.2$ psql
psql (14.11)
输入 "help" 来获取帮助信息.

postgres=# create database work;
CREATE DATABASE
postgres=# \l
                                     数据库列表
   名称    |  拥有者  | 字元编码 |  校对规则   |    Ctype    |       存取权限        
-----------+----------+----------+-------------+-------------+-----------------------
 nanjing   | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 postgres  | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 template0 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 work      | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
(5 行记录)

postgres=#  create table jichu (id int not null primary key,name varchar(15),age int,address varchar(10));
CREATE TABLE
postgres=# \d
               关联列表
 架构模式 | 名称  |  类型  |  拥有者  
----------+-------+--------+----------
 public   | jichu | 数据表 | postgres
(1 行记录)

postgres=# \d jichu
                    数据表 "public.jichu"
  栏位   |         类型          | 校对规则 |  可空的  | 预设 
---------+-----------------------+----------+----------+------
 id      | integer               |          | not null | 
 name    | character varying(15) |          |          | 
 age     | integer               |          |          | 
 address | character varying(10) |          |          | 
索引:
    "jichu_pkey" PRIMARY KEY, btree (id)

postgres=# insert into jichu values (1,'xiaowang',25,'beijing');
INSERT 0 1
postgres=# insert into jichu values (2,'xiaoli',20,'nanjing');
INSERT 0 1
postgres=# insert into jichu values (3,'xiaoliu',22,'wuhan');
INSERT 0 1
postgres=# select * from jichu;
 id |   name   | age | address 
----+----------+-----+---------
  1 | xiaowang |  25 | beijing
  2 | xiaoli   |  20 | nanjing
  3 | xiaoliu  |  22 | wuhan
(3 行记录)

postgres=# 

6.4.2更新数据

基本语法为:update 表名 set 字段1 = 值1,字段2 = 值2,...[where 条件];

6.4.3删除数据

基本语法为:delete from table_name [where 条件]; 
注意:
DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
DELETE 语句不能删除某一个字段的值。

6.5DQL语句

DQL (Data Query Language) 是SQL语言中专门用于查询数据的部分,它的主要目的是从数据库中检索满足特定条件的数据,而不改变数据库的状态 它的语句只有一个:select

在数据库操作中,查询的频率要远远高于增、删、改操作,在访问页面时,页面中所有的信息都需要通过select查询出来

6.5.1基本查询

基本语法为:select 字段1,字段2,...  from table_name [where 条件];

postgres=# \c work
您现在已经连接到数据库 "work",用户 "postgres".
work=# create table mixue (id int not null primary key,name varchar(15),age int,address varchar(10));    #创建表
CREATE TABLE
work=# insert into mixue values (1,'xiaowang',30,'beijing'),(2,'xiaozhao',28,'shanghai'),(3,'xiaoli',25,'shanghai'),(4,'xiaoliu',26,'beijing');   #插入数据
INSERT 0 4
work=# select * from mixue;   #查询所有字段
 id |   name   | age | address  
----+----------+-----+----------
  1 | xiaowang |  30 | beijing
  2 | xiaozhao |  28 | shanghai
  3 | xiaoli   |  25 | shanghai
  4 | xiaoliu  |  26 | beijing
(4 行记录)

work=# select name,age from mixue;  #查询指定字段

6.5.2条件查询

6.5.2.1 比较运算符
比较运算符功能
> 或!=大于
>=大于等于
<小于
<=小于等于
=等于
<>或!=不等于
BETWEEN ... AND ...在某个范围之内(含最小、最大值)
IN(..)在in之后的列表中的值
LIKE 占位符模糊匹配( _ :匹配单个字符,%:匹配任意个字符)
IS NULL是NULL

6.5.2.2逻辑运算符
逻辑运算符功能
AND 或 &&并且(多个条件同时成立)
OR 或 ||或者(多个条件任意一个成立)
NOT 或 !非,不是

6.5.3排序查询

基本语法为:select 字段1, 字段2, ... from 表名 [where 条件]order by 排序字段1,排序字段2, ... [asc|desc]

关键字排序方式
asc升序排序,默认排序方式asc 可以省略
desc降序排序
distinct去重、压缩
work=# select * from mixue;
 id |   name   | age | address  
----+----------+-----+----------
  1 | xiaowang |  30 | beijing
  2 | xiaozhao |  28 | shanghai
  3 | xiaoli   |  25 | shanghai
  4 | xiaoliu  |  26 | beijing
(4 行记录)

work=# select * from mixue order by age;  age升序排序,默认排序方式asc 可以省略
 id |   name   | age | address  
----+----------+-----+----------
  3 | xiaoli   |  25 | shanghai
  4 | xiaoliu  |  26 | beijing
  2 | xiaozhao |  28 | shanghai
  1 | xiaowang |  30 | beijing
(4 行记录)

work=# select * from mixue order by age desc;  #age字段值降序排序
 id |   name   | age | address  
----+----------+-----+----------
  1 | xiaowang |  30 | beijing
  2 | xiaozhao |  28 | shanghai
  4 | xiaoliu  |  26 | beijing
  3 | xiaoli   |  25 | shanghai
(4 行记录)

work=# select distinct address from mixue;    #数据压缩,将相同的数据压缩、去重
 address  
----------
 shanghai
 beijing
(2 行记录)

work=#
6.5.3.1升序排序

6.5.3.2降序排序

6.5.3.3去重、压缩

6.5.4limit子句

limit关键字用于限制查询结果返回的数据行数

limit子句的用法:

limit count:返回查询结果的前count行。
例如,如果你想从mixue表中获取前10条记录:

Sql
select * from mixue limit 10;
limit offset, count:返回从offset行开始的count行。
这里的offset是指从查询结果的第几行开始,count是指从offset开始往后取多少行。
例如,如果你想要从第11行开始取10条记录:

Sql
select * from employees limit 10 offset 10;
这意味着查询结果会跳过前10行,然后返回接下来的10行记录

在PostgreSQL中,limit通常与offset配合使用来进行分页查询。
需要注意的是,如果同时使用OFFSET和limit,较大的OFFSET值会导致性能下降,尤其是在大表上进行分页时,因为数据库需要扫描并丢弃很多不需要的行才能找到需要的行。在实现分页时,最好能利用索引来优化查询性能

6.5.5 as 别名

在PostgreSQL中,为字段或表设置别名(alias)通常用于查询结果中,使列名更具可读性或简化后期处理

6.5.5.1设置字段别名

设置字段别名

基本语法为:select 字段1 [as] 字段1别名,字段2 [as] 字段2别名,.... from table_name;
#as可以省略

6.5.5.1设置表别名

设置表别名

基本语法为:select 表别名.字段1,表别名.字段2,.... from table_name [as] alias_table;

6.5.5.1as还可以作为连接语句

此外,as还可以作为连接语句,将select查询到的语句,重定向到新的表格当中
基本语法为:create table new_table [as] select 字段1,字段2.... from table_name;

#注释:只能复制表的字段与数据,不能复制表的约束,例如主键、唯一键等

6.5.6子查询

子查询(Subquery)是在SQL查询中嵌套的查询语句,它先执行内层查询,然后将结果作为外层查询的一部分进行处理。子查询通常放在比较运算符的右侧,或者用在IN、ANY、ALL、EXISTS等关键字后面

6.5.6.1 EXISTS关键字

EXISTS的参数是一个任意的SELECT语句, 或者说子查询。系统对子查询进行运算以判断它是否返回行。如果它至少返回一行,那么EXISTS的结果就为“真”; 如果子查询没有返回行,那么EXISTS的结果是“假”。

子查询可以引用来自周围的查询的变量,这些变量在该子查询的任何一次计算中都起常量的作用。

这个子查询通常只是运行到能判断它是否可以返回至少一行为止, 而不是等到全部结束。在这里写任何有副作用的子查询都是不明智的(例如调用序列函数);这些副作用是否发生是很难判断的。

因为结果只取决于是否会返回行,而不取决于这些行的内容, 所以这个子查询的输出列表通常是无关紧要的。

一个常用的编码习惯是用EXISTS(SELECT 1 WHERE ...)的形式写所有的EXISTS测试。不过这条规则有例外,例如那些使用INTERSECT的子查询

基本语法为:select 字段1,字段2,...  from table_name where exists (子语句);

#这个简单的例子类似在所有字段上的一次内联接,但是它为每个mixue表的行生成最多一个输出,即使存在多个匹配haidilao的行也如此∶

6.5.6.2IN关键字

在查询表的数据时通过将子语句查询到的数据,当作主语的参数去匹配查询的表

基本语法为:select 字段1,字段2,...  from table_name where 匹配字段 in (子语句);

6.6DCL语句

  • DCL(Data Control Language)是SQL语言中的一个重要组成部分,它主要负责对数据库系统的访问权限和安全性进行管理。
  • DCL语句主要用于授予或撤销用户对数据库对象(如表、视图、序列、存储过程等)的操作权限,以及管理事务和数据库的安全策略。

常用语句有:GRANT,REVOKE

权限说明
all,all privileges所有权限
insert插入数据
select查询数据
update更新表的数据
delete删除表中数据
create创建库,表
drop删除库,表
index建立索引
alter更改表属性
create temp orary tableslock tables锁表
create view创建视图
show view显示视图
create routine创建存储过程
alter routine修改存储过程
event事件
trigger on创建触发器

6.6.1创建用户

6.6.2用户授权

6.6.2.1用户库授权

用户库授权:grant 权限 on database data_name to 用户;

grant all privileges on database work to zzz;
#授权用户可以操作work库

6.6.2.2用户表授权

用户表授权:grant 权限 on 表名 in schema public to 用户;

\c work;
grant all privileges on all tables in schema public to zzz;
#切换到work库下,授权库下的所有表

6.6.2.3查看权限

#退出之后  psql  -U  指定用户  -d  指定库

​[root@localhost ~]# psql -U zzz -d work;

\du # 列出所有的用户,包括他们的角色、登录权限、超用户权限等信息

\du username # 查看指定用户的权限

6.6.3撤销权限与删除用户

revoke all privileges on database work  from zzz;
#删除库权限
revoke all privileges on all tables in schema public from zzz;
#删除表权限
work=# drop user zzz;
#删除用户

6.6.4角色

在postgresql数据库当中,用户与角色没有严格意思上的区分,一个用户相当于一个角色

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

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

相关文章

【学习】软件测试自动化,是未来的趋势还是当前的必需

在当今快速迭代的软件开发周期中&#xff0c;速度和质量成为了企业生存的关键。随着DevOps实践的普及和持续集成/持续部署&#xff08;CI/CD&#xff09;流程的标准化&#xff0c;软件测试自动化已经从未来的趋势转变为当前的必要性。本文将探讨自动化测试的现状、必要性以及其…

[Qt的学习日常]--初识Qt

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、Qt的基本…

漫谈AI 时代的信息模型

模型化- 数字化转型的重要基石 在各行各业推行数字化转型过程中&#xff0c;构建信息化模型十分重要&#xff0c;它是数字化转型的基石。事实上&#xff0c;数字化转型的核心是“万物皆模型”&#xff0c;在工业领域&#xff0c;以德国为主导的工业4.0 发展进程中&#xff0c;…

53 语言模型【动手学深度学习v2】

https://www.bilibili.com/read/cv17622666/?jump_opus1https://www.bilibili.com/read/cv17622666/?jump_opus1

【C语言回顾】操作符详解

前言1. 操作符分类2. 二进制和进制转换2.1 二进制2.2 进制转换2.2.1 二进制转十进制2.2.2 二进制转八进制2.2.3 二进制转十六进制 3. 原码、反码、补码4. 移位操作符4.1 左移操作符4.2 右移操作符 5. 位操作符6. 单目操作符7. 逗号表达式8. 下标引用操作符9. 函数调用操作符10.…

《ESP8266通信指南》4-以Client进行TCP通信(AT指令)

往期 《ESP8266通信指南》3-常用AT指令详解-8266连WIFI-CSDN博客 《ESP8266通信指南》2-ESP8266 AT测试-CSDN博客 《ESP8266通信指南》1-ESP8266 简介-CSDN博客 1. 小节目标 通过 AT 指令使用 8266 进行 TCP 通信 2. 书接上回 复习以下&#xff0c;上一小节我们讲到了 8…

ESP32开发

目录 1、简介 1.1 种类 1.2 特点 1.3 管脚功能 1.4 接线方式 1.5 工作模式 2、基础AT指令介绍 2.1 AT指令类型 2.2 基础指令及其描述 2.3 使用AT指令需要注意的事 3、AT指令分类和提示信息 3.1 选择是否保存到Flash的区别 3.2 提示信息 3.3 其他会保存到Flash的A…

数据结构(Wrong Question)

一、绪论 1.1 数据结构的基本概念 D 因为抽象数据类型&#xff08;ADT&#xff09;描述了数据的逻辑结构和抽象运算&#xff0c;通常用&#xff08;数据对象&#xff0c;数据对象&#xff0c;基本操作集&#xff09;这样的三元组来表示&#xff0c;从而可构成一个完整的数据结…

【笔记django】创建一个app

创建app 错误 raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Cannot import rules. Check that dvadmin.rules.apps.RulesConfig.name is correct.原因 刚创建的rules的app被手动移动到了dvadmin目录下 而dvadmin/rules/apps.py的内容还是&…

文字转粤语语音怎么转?文字转语音

文字转粤语语音怎么转&#xff1f;文字转粤语语音的应用&#xff0c;不仅展现了现代科技的魅力&#xff0c;也为我们提供了更加便捷的交流方式。它们将文字转化为粤语发音&#xff0c;让我们能够更直观地感受粤语的韵味和魅力。同时&#xff0c;这些软件还具备高度的可定制性&a…

使用 FFMPEG 实现录屏和录音

FFmpeg 是一个非常强大的开源工具&#xff0c;它可以用来处理音频和视频。 要使用 FFmpeg 进行录屏和录音&#xff0c;需要首先确保你的系统已经安装了 FFmpeg。在大多数 Linux 发行版中&#xff0c;可以通过包管理器&#xff08;如 apt 或 yum&#xff09;来安装。在 Windows …

DNS 解析过程

一张图即可说明&#xff0c;如果能看到上图就不用往下看了。下面是上图的文字版解析 a. 用户输入 URL: 当你在浏览器中点击一个链接或输入一个网址时&#xff0c;比如点击一个图片链接 http://www.example.com/image.jpg&#xff0c;这个过程开始于你的设备尝试理解这个地址所…

(mac)Promethues监控之mysqld_exporter(MySQL监控)

搭建Mysqld_exporterPrometheusGrafana监控系统 普罗米修斯是后端数据监控平台&#xff0c;通过Mysqld_exporter收集mysql数据&#xff0c;Grafana将数据用图形的方式展示出来 前提&#xff1a;已安装grafana和promethues 1.下载安装Mysql &#xff08;1&#xff09;启动MySQL…

在 Slurm 上运行 Jupyter

1. 背景介绍 现在的大模型训练越来越深入每个组了&#xff0c;大规模集群系统也应用的愈发广泛。一般的slurm系统提交作业分为2种&#xff0c;一种是srun&#xff0c;这种所见即所得的申请方式一般适用于短期的调试使用&#xff0c;大概一般允许的时间从几个小时到1天左右&…

详细分析MySQL中的distinct函数(附Demo)

目录 前言1. 基本知识2. 基础Demo3. 进阶Demo 前言 该函数主要用于去重&#xff0c;对于细节知识&#xff0c;此文详细补充说明 1. 基本知识 DISTINCT 是一种用于查询结果中去除重复行的关键字 在查询数据库时&#xff0c;可能会得到重复的结果行&#xff0c;但有时只需要这…

AIGC时代之 - 怎样更好的利用AI助手 - 指令工程

爆火的AIGC 2022年11月30日&#xff0c;OpenAI发布ChatGPT 3 2022年12月4 日&#xff0c;ChatGPT 3 已拥有超过一百万用户 2023年各种大语言模型开始火爆全球 GPT们&#xff0c;已经成为了我工作和学习的非常重要的工具。 ChatGPT也没那么神奇&#xff1f; 不知道大家有没有…

JS----前端将列表数据转树型数据

前端将列表数据转树型数据 场景&#xff1a;后端返回列表数据&#xff0c;由前端根据业务需求完成树型数据转换&#xff0c; 常用于侧边导航菜单&#xff0c;下拉树型数据项等 export function listToTree(data: []) {var map: any {},tree: any []data.forEach((item: any…

virtualbox 网络设置实现主机和虚拟机互相访问

前言 一般来说&#xff0c;virtualbox 虚拟机的上网模式是 NAT。这样虚拟机可以上网并访问宿主机&#xff0c;但宿主机无法访问虚拟机&#xff0c;也无法 ping 通。下面介绍双网卡模式&#xff0c;实现虚拟机和宿主机能够互相访问 ping 通。 双网卡模式 进入虚拟机的网络设置…

【MySQL】A01、性能优化-语句分析

1、数据库优化方向 A、SQL及索引优化 根据需求写出良好的SQL&#xff0c;并创建有效的索引&#xff0c;实现某一种需求可以多种写法&#xff0c;这时候我们就要选择一种效率最高的写法。这个时候就要了解sql优化 B、数据库表结构优化 根据数据库的范式&#xff0c;设计表结构&…

webpack中mode、NODE_ENV、DefinePlugin、cross-env的使用

本文讲的全部知识点&#xff0c;都是和webpack相关的。如果你之前有疑问&#xff0c;那本文一定能帮你搞清楚。 问题来源一般是类似下面代码&#xff08;webpack.json中&#xff09;&#xff1a; "scripts": {"dev": "cross-env NODE_ENVdevelopmen…